【发布时间】:2016-10-19 11:56:37
【问题描述】:
我有一个类似 'a b b b a' 的字符串,并且想用不同的字符替换该字符串中在字符前后都有空格的每个 'b'。我怎么能用正则表达式做到这一点?我的想法是这样的:
'x a y a x'.replace(new RegExp(' a ', 'g'), ' b '); // is: x b y b x, should: x b y b x (correct)
'x a a a x'.replace(new RegExp(' a ', 'g'), ' b '); // is: x b a b x, should: x b b b x (wrong)
'x aa x'.replace(new RegExp(' a ', 'g'), ' b '); // is: x aa x, should: x aa x (correct)
但该正则表达式仅在该字符的另一个出现旁边不超过 1 次出现时才有效。我如何编写正则表达式以获得正确的行为?
【问题讨论】:
-
a+而不仅仅是a -
Regex 正在读取每个等待获取 'a' 的字符,当它到达第一个字符时,如下所示:'x[ a ]a a x' 它会替换它并继续到下一个位 'a a x'。它跳过下一个“a”,因为它前面没有空格,忽略那个“a”。这就是为什么你会得到'x b a b x'
标签: javascript regex string replace