我需要一个正则表达式来匹配最多包含 2 个破折号和 2 个点的任何字符串。
不一定要有破折号或点,但如果有 3 个以上破折号or3 个点或什至同时包含 3 个以上破折号和 3 个以上点,则正则表达式不得与字符串匹配。
旨在用于 PHP。
我知道使用 PHP 函数的简单替代方案,但它要在只允许使用正则表达式进行过滤的大型系统中使用。
将匹配的示例字符串:
你好世界.com
不匹配的示例字符串:
www.hello-world.easy.comor你好世界-i-win.com
这符合您的期望吗?
(?!^.*?([.-]).*\1.*\1.*$)^.*$
See it 在 Regexr 上
(?!^.*?([.-]).*\1.*\1.*$)
是一个消极的前瞻。与第一个相符.-
将其放入捕获组 1 中,然后使用反向引用检查是否还有两个捕获组\1
。一旦找到三个,表达式就不再匹配。
^.*$
如果否定前瞻未匹配,则匹配从开始到结束的所有内容。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)