Reg ex接受数字连字符和括号(顺序正确)

时间:2018-11-11 10:43:39

标签: c# regex

我需要一个正则表达式,它可以接受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#。

1 个答案:

答案 0 :(得分:1)

尝试一下:

^(?:1[\s-]*)?(?:\(\d{3}\)|\d{3})[\s-]*\d{3}[\s-]*\d{4}$

查看here

故障:

  • ^字符串的开头
  • 1[\s-]* (可选) 匹配文字1和零个或多个空格字符和/或破折号
  • (?:\(\d{3}\)|\d{3})符合以下条件之一:
    • 3个数字\d{3}前后用\(和右括号\)括起来
    • 3位数字\d{3}不在括号内
  • [\s-]*零个或多个空格字符和/或破折号
  • \d{3}另外3位数字
  • [\s-]*零个或多个空格字符和/或破折号
  • \d{4}另外4位数字
  • $字符串结尾