我需要一个正则表达式,它可以接受10到11位数字的电话号码,连字符,括号(按正确顺序),并允许使用空格(我将随后删除所有空格)。 因此,以下所有字符串都应被它接受。
12223334444
2223334444
1(222)333-4444
1(222) 333-4444
1 (222) 333-4444
1 (222) 333 - 4444
(222)333-4444
(222) 333-4444
(222) 333 - 4444
1-222-333-4444
1 - 222 - 333 - 4444
222-333-4444
222 - 333 - 4444
我已经做到了,但是它接受许多其他字符串
^(.*?[.-|\( |]|[0-9][^\d]*(\d+)[^\d].* [.-|\)].*)$
我正在使用C#。
答案 0 :(得分:1)
尝试一下:
^(?:1[\s-]*)?(?:\(\d{3}\)|\d{3})[\s-]*\d{3}[\s-]*\d{4}$
查看here
故障:
^
字符串的开头1[\s-]*
(可选) 匹配文字1
和零个或多个空格字符和/或破折号(?:\(\d{3}\)|\d{3})
符合以下条件之一:
\d{3}
前后用\(
和右括号\)
括起来\d{3}
不在括号内[\s-]*
零个或多个空格字符和/或破折号\d{3}
另外3位数字[\s-]*
零个或多个空格字符和/或破折号\d{4}
另外4位数字$
字符串结尾