寻找更简洁的正则表达式解决方案来匹配 SSN 的不同格式

2023-12-12

要查看我想要的内容,请查看我正在使用的正则表达式。我会尝试用英语解释它。 我要匹配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(使用前将#替换为@)

寻找更简洁的正则表达式解决方案来匹配 SSN 的不同格式 的相关文章

随机推荐