Joh*_*ohn 3 javascript regex string replace
我有一个像'abbba'这样的字符串,并希望替换该字符串中的每个'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)
Run Code Online (Sandbox Code Playgroud)
但是,只有在角色的另一个出现旁边出现不超过1个字符时,该正则表达式才有效.我怎么能写正则表达式以获得正确的行为?
在"a"之后使用前瞻来匹配重叠的子串:
/ a(?= )/g
Run Code Online (Sandbox Code Playgroud)
或者,要匹配任何空格,请用空格替换空格\s.
作为零宽度断言的前瞻不消耗文本,因此"a"之后的空间将可用于下一个匹配(模式中的第一个空格是消费模式的一部分).
请参阅正则表达式演示
var regex = / a(?= )/g;
var strs = ['x a y a x', 'x a a a x', 'x aa x'];
for (var str of strs) {
console.log(str,' => ', str.replace(regex, " b"));
}Run Code Online (Sandbox Code Playgroud)