我正在JavaScript中执行一个正则表达式,以将数字之后或英镑符号之前的句点替换为4。当我输入i.t.
作为输入时,它将转换为“ i4t”。为什么会这样呢?
我的模式是
RegExp('([^\\d])[.]([^#])', "g")
示例输入:i.t.
预期输出:i4t4
实际输出:i4t.
答案 0 :(得分:0)
[^#]
否定的字符类匹配并使用了不是#
的字符。 t
之后的点因此在第一次迭代中被匹配,并且第二次匹配不会发生。
您可以使用
s.replace(/(^|\D)\.(?!#)/g, '$14')
请参见regex demo。
详细信息
(^|\D)
-捕获组1:以字符串(^
或(|
)以外的任何字符开头,而不是数字(\D
)(注意:如果不应触摸字符串开头的.
,请使用(\D)
)\.
-一个点(?!#)
-当前位置右侧不允许有#
。JS演示:
console.log(
"i.t.".replace(/(^|\D)\.(?!#)/g, '$14')
);