我正在尝试将系统中的某些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不再匹配。你能帮我解决这个问题并解释我做错了吗?
答案 0 :(得分: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