^\d{3}-\d{3}-\d{3}$匹配111-111-111并且^\d{9}$匹配111111111我如何编写正则表达式,使它能够找到这两个输入的匹配?
^\d{3}-\d{3}-\d{3}$
111-111-111
^\d{9}$
111111111
5t7ly7z51#
使用替代方法:
^(\d{3}-\d{3}-\d{3})|(\d{9})$
5jvtdoz22#
只是让破折号可选^\d{3}-?\d{3}-?\d{3}$然而,这也将允许111-111111或111111-111老实说,你最好去掉破折号,然后验证^\d{9}$
^\d{3}-?\d{3}-?\d{3}$
rkkpypqq3#
我不是Maven,但在一个快速的尝试,我来到:
^\d{3}(-|){1}\d{3}(-|){1}\d{3}$
bzzcjhmw4#
我发现这是迄今为止最好的工作:
\b(?:\d{3}-\d{3}-\d{3})\b|\b(?:\d{3} \d{3} \d{3})\b
查找3组数字(每组3个数字)之间的连字符或空格。
8i9zcol25#
这将适用于.net,因为它支持捕获组。因此,使用捕获组来强制执行两个破折号或没有破折号的情况
^\d{3}(-?)\d{3}\1\d{3}$
由于你在注解中提到了空格,那么第一个捕获组-?就变成了[ -]?,你可以根据需要调整这个捕获组,它将继续需要平衡:
-?
[ -]?
^\d{3}([- ]?)\d{3}\1\d{3}$
5条答案
按热度按时间5t7ly7z51#
使用替代方法:
5jvtdoz22#
只是让破折号可选
^\d{3}-?\d{3}-?\d{3}$
然而,这也将允许
111-111111或111111-111
老实说,你最好去掉破折号,然后验证
^\d{9}$
rkkpypqq3#
我不是Maven,但在一个快速的尝试,我来到:
bzzcjhmw4#
我发现这是迄今为止最好的工作:
查找3组数字(每组3个数字)之间的连字符或空格。
8i9zcol25#
这将适用于.net,因为它支持捕获组。因此,使用捕获组来强制执行两个破折号或没有破折号的情况
由于你在注解中提到了空格,那么第一个捕获组
-?
就变成了[ -]?
,你可以根据需要调整这个捕获组,它将继续需要平衡: