无法使用 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 #

您的正则表达式有两个问题:

  1. 您使用了错误的斜杠,应该是 /@223(?:\D|'')/gm
  2. 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