"通用"电话号码的基本正则表达式

rob*_*sta 5 c# regex asp.net validation

我需要一个正则表达式(用于ASP .NET网站)来验证电话号码.它应该是灵活的,唯一的限制是:

  • 应该至少9位数
  • 没有字母
  • 可以包括空格,连字符,单个(+)

我搜索过SO和Regexlib.com,但我得到了更多限制的表达,例如英国电话或美国等.

con*_*tor 18

^\s*\+?\s*([0-9][\s-]*){9,}$
Run Code Online (Sandbox Code Playgroud)

分解:

^           # Start of the string
  \s*       # Ignore leading whitespace
  \+?       # An optional plus
  \s*       # followed by an optional space or multiple spaces
  (
     [0-9]  # A digit
     [\s-]* # followed by an optional space or dash or more than one of those
  )
   {9,}     # That appears nine or more times
$           # End of the string
Run Code Online (Sandbox Code Playgroud)

我更喜欢以后一种方式编写正则表达式,因为它将来更容易阅读和修改; 大多数语言都有一个需要为其设置的标志,例如RegexOptions.IgnorePatternWhitespace在C#中.


Ray*_*Ray 6

\+?[\d- ]{9,}

这将匹配数字,可选择以加号开头,然后至少九个字符长,用短划线和空格.

虽然这意味着破折号和空格会计入九个字符.我会删除破折号和空格然后使用

\+?[\d]{9,}


Roy*_*tus 6

最好要求用户填写他的国家/地区,然后应用该国家/地区的正则表达式。每个国家/地区都有自己的电话号码格式。