Java Regex用于电话号码 – 必须仅包含8位数字且不超过2个短划线

我需要你的帮助。 我必须形成一个只接受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) 

任何帮助表示赞赏。

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

你可以试试这个。看看演示。

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