替换字符串中的所有句点均无效

时间:2018-12-20 13:33:32

标签: javascript node.js regex string replace

我正在JavaScript中执行一个正则表达式,以将数字之后或英镑符号之前的句点替换为4。当我输入i.t.作为输入时,它将转换为“ i4t”。为什么会这样呢?

我的模式是

RegExp('([^\\d])[.]([^#])', "g")

示例输入:i.t.
预期输出:i4t4
实际输出:i4t.

1 个答案:

答案 0 :(得分:0)

[^#]否定的字符类匹配并使用了不是#的字符。 t之后的点因此在第一次迭代中被匹配,并且第二次匹配不会发生。

您可以使用

s.replace(/(^|\D)\.(?!#)/g, '$14')

请参见regex demo

详细信息

  • (^|\D)-捕获组1:以字符串(^或(|)以外的任何字符开头,而不是数字(\D)(注意:如果不应触摸字符串开头的.,请使用(\D)
  • \.-一个点
  • (?!#)-当前位置右侧不允许有#

JS演示:

console.log(
  "i.t.".replace(/(^|\D)\.(?!#)/g, '$14')
);