用点替换数字

时间:2015-07-18 13:56:13

标签: javascript regex

我正在尝试将系统中的某些ID号替换为可点击的号码以打开相关记录。问题是,它们有时采用以下格式:123.456.789。 当我使用我的正则表达式时,我可以替换它们并且它工作正常。当我还有正则表达式也匹配的IP地址时,问题就会得到解决:123。[123.123.123]([]表示匹配的位置。)

如何防止此行为?

我尝试过这样的事情:/^(?!\.)([0-9]{3}\.[0-9]{3}\.[0-9]{3})(?!\.)/

我正在研究"笔记"在票务系统中。当注释仅包含ID或IP时,正则表达式正在运行。当它包含更多文本时:

Affected IDs:
641.298.855 (this, lead)
213.794.868
948.895.285

然后它与我的ID不再匹配。你能帮我解决这个问题并解释我做错了吗?

2 个答案:

答案 0 :(得分:2)

添加gm修饰符:

/^(?!\.)([0-9]{3}\.[0-9]{3}\.[0-9]{3})(?!\.)/gm

https://regex101.com/r/pK1fV4/2

答案 1 :(得分:1)

您不需要在开始时使用否定前瞻,也不需要包含g修饰符,只需m修饰符即可,因为^匹配一行的开头,以下模式将匹配仅在开始时存在的字符串,因此它不会进行任何全局匹配(即,一行中有两个或多个匹配)。

/^([0-9]{3}\.[0-9]{3}\.[0-9]{3})(?!\.)/m

为了提高性能,您还不需要使用捕获组。

/^[0-9]{3}\.[0-9]{3}\.[0-9]{3}(?!\.)/m