簡體   English   中英

RegEx替換簡單的縮寫

[英]RegEx to replace simple abbreviations

我想替換每個縮寫是這樣的: eg 這意味着一個字符,一個點,一個字符和一個點。 前導和尾隨空間。 但這不起作用:

str.replace(new RegExp('\s([A-z]\.[A-z]\.)\s', 'g'), 'abbreviation<$1>')

Lorem e.g. ipsum

應得

Lorem abbreviation<e.g.> ipsum

[Az]與您的想法不符:從大寫字母到小寫字母的ASCII范圍也包括一些非字母字符。 嘗試[A-Za-z] ,或忽略大小寫選項:

 console.log("Lorem eg ipsum".replace(/\\s([az]\\.[az]\\.)\\s/gi, ' abbreviation<$1> ')) 

new Regexp語法中,字符串參數應已轉義斜線。

str.replace(new RegExp('\\s([A-Za-z]\\.[A-Za-z]\\.)\\s', 'g'), ' abbreviation<$1>')

聽起來您想做一堆,所以我要定義一個像這樣的對象數組。

var str = 'The FBI and NASA work for the US government'
var abbr = [
    { 
        short: 'FBI',
        long: 'Federal Bureau of Investigation'
    },
    { 
        short: 'NASA',
        long: 'National Aeronautics and Space Administration'
    },
    {
        short: 'US',
        long: 'United States'
    }
];

然后遍歷它們並像這樣替換:

for (var a = 0; a < abbr.length; a++) {
    str = str.replace(abbr[a].short, abbr[a].short + ' (' + abbr[a].long + ')');
}

然后您可以console.log(str)並獲得

FBI (Federal Bureau of Investigation) and NASA (National Aeronautics and Space Administration) work for the US (United States) government

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM