要查看我想要的内容,请查看我正在使用的正则表达式。我会尝试用英语解释它。
我要匹配4444
or 444444444
or 444-44-4444
。
这就是我所拥有的,它可以满足我的需求。
^[0-9]{9}$|^[0-9]{4}$|^[0-9]{3}-[0-9]{2}-[0-9]{4}$
有没有办法不用 OR 来做到这一点?我想过这样做
([0-9]{3}-?[0-9]{2}-?)?[0-9]{4}
但这允许222-222222
我想排除它。
您应该能够通过反向引用来做到这一点:
^(?:\d{3}(-?)\d{2}\1)?\d{4}$
If a -
存在,它被捕获并且可以被引用\1
。如果它不存在,\1
只会是空的。所以它本质上意味着:如果-
是在那个位置,它也一定在另一个位置。
DEMO
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)