RegEx取代简单缩写

时间:2016-12-09 18:27:16

标签: javascript regex

我想替换每个缩写:e.g.。这意味着一个字符,一个点,一个字符和一个点。领先和尾随空间。 但这不起作用:

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

实施例

Lorem e.g. ipsum

应该

Lorem abbreviation<e.g.> ipsum

3 个答案:

答案 0 :(得分:2)

[A-z]与您的想法不符:从大写字母到小写的ASCII范围也包括一些非字母字符。请尝试[A-Za-z]或忽略大小写选项:

console.log("Lorem e.g. ipsum".replace(/\s([a-z]\.[a-z]\.)\s/gi, ' abbreviation<$1> '))

答案 1 :(得分:0)

new Regexp语法中,字符串参数应该有转义斜杠。

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

答案 2 :(得分:0)

听起来你想做一堆,所以我定义了一个这样的对象数组。

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