问题描述
我正在尝试使用RegExp替换特定的字符串集,但不能替换。我正在尝试的正则表达式是
\@223(?:\D|'')\gm
要测试的字符串集是这些
@223 ->Replace 223 with #
@223+@33 ->Replace 223 with #
@22; ->Not Replace
@2234 ->Not Replace
@22234 ->Not Replace
@223@44 ->Replace 223 with #
解决方法
如果这是你的追求:
var string = `
@223
@223+@33
@22;
@2234
@22234
@223@44
`;
regex = /(?<=@)(223)(?=\D)/g;
string = string.replace(regex,"#");
console.log(string);
输出:
@#
@#+@33
@22;
@2234
@22234
@#@44
说明:
(?<=@) : test if leaded by @ character.
(?=\D) : followed by any character except digit
,
您的正则表达式有两个问题:
- 您使用了错误的斜杠,应该为
/@223(?:\D|'')/gm
。 - 非捕获组仍将包含在完全匹配项中,因此您可能需要仅在
@223
部分周围加上括号,并替换该组。
您可以在regex101.com之类的服务中测试您的正则表达式。请注意,在该服务中,开始斜杠和结束斜杠已经隐含。