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

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

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

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

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

^\s*\+?\s*([0-9][\s-]*){9,}$ 

分解:

 ^ # 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 

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

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

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

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

\+?[\d]{9,}

^ [0-9- +] + $

  
 @"^(?:\+?1[-. ]?)?\(?([0-9]{3})\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$" 

这是我使用的。 这将处理大多数情况下的通用电话号码validation。

这个是超级通用的,只允许给定电话号码中的字符,包括#。 它忽略了任何格式模式。

 @"^([\(\)\+0-9\s\-\#]+)$"