加拿大SIN的正则表达式(社会保险号)

时间:2013-11-19 21:51:54

标签: .net regex

^\d{3}-\d{3}-\d{3}$匹配111-111-111

^\d{9}$匹配111111111

如何编写正则表达式,以便找到这两个输入的匹配项?

5 个答案:

答案 0 :(得分:4)

使用替代方案:

^(\d{3}-\d{3}-\d{3})|(\d{9})$

答案 1 :(得分:1)

只需选择破折号

^\d{3}-?\d{3}-?\d{3}$

如果这也允许

111-111111或111111-111

老实说,你最好剥掉破折号并验证^\d{9}$

答案 2 :(得分:0)

我不是专家,但在快速尝试中我来到了:

^\d{3}(-|){1}\d{3}(-|){1}\d{3}$

答案 3 :(得分:0)

这是什么语言?好的,感谢您将其更新为.net。这适用于.net,因为它支持捕获组。

如果它是支持捕获组的那个那么使用捕获组来强制执行破折号或无破坏的情况

^\d{3}(-?)\d{3}\1\d{3}$

Demo

既然你现在在评论中提到了空格,那么第一个捕获组-?就会变成这样的[ -]?,你可以根据需要调整那个捕获组,它将继续需要平衡:

^\d{3}([- ]?)\d{3}\1\d{3}$

答案 4 :(得分:0)

我发现目前为止效果最好:

\ b(?:\ d {3}-\ d {3}-\ d {3})\ b | \ b(?:\ d {3} \ d {3} \ d {3}) \ b

在3组3个数字之间寻找连字符或空格。