我想替换每个缩写:e.g.
。这意味着一个字符,一个点,一个字符和一个点。领先和尾随空间。
但这不起作用:
str.replace(new RegExp('\s([A-z]\.[A-z]\.)\s', 'g'), 'abbreviation<$1>')
实施例
Lorem e.g. ipsum
应该
Lorem abbreviation<e.g.> ipsum
答案 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