一尘不染

电话号码的Java正则表达式-必须仅包含8位数字,且不超过2个破折号[重复]

java

我需要您的帮助。我必须形成一个仅接受8个数字(不包含字母)且不超过3个破折号的正则表达式。

它应该接受以下示例:

12345678
1234 5678
1234-5678
123-45-678
12-345-678

它不应接受以下示例:

1234 (less than 8 digits)
123456789 (more than 8 digits)
-12345678-
!@@#$%
12ABCBDEF (with letters)
12-34-56-78 (more than 3 dashes)

任何帮助表示赞赏。


阅读 339

收藏
2020-12-03

共1个答案

一尘不染

^(?=(?:\D*\d){8}$)\d+(?:(?:-\d+){0,2}|(?:\s+\d+){0,1})$

您可以尝试一下。请参阅演示。

https://regex101.com/r/hE4jH0/20

2020-12-03