无法使用 RegExp 替换
Unable to replace using RegExp
我正在尝试使用 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 #
您的正则表达式有两个问题:
- 您使用了错误的斜杠,应该是
/@223(?:\D|'')/gm
。
- non-capturing 组仍将包含在完整匹配中,因此您可能需要在
@223
部分周围添加括号并替换该组。
您可以在 regex101.com 等服务中测试您的正则表达式。请注意,在该服务中,开始和结束斜杠已经隐式包含。
如果这是你去的:
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
我正在尝试使用 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 #
您的正则表达式有两个问题:
- 您使用了错误的斜杠,应该是
/@223(?:\D|'')/gm
。 - non-capturing 组仍将包含在完整匹配中,因此您可能需要在
@223
部分周围添加括号并替换该组。
您可以在 regex101.com 等服务中测试您的正则表达式。请注意,在该服务中,开始和结束斜杠已经隐式包含。
如果这是你去的:
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