多个国家/地区的电话号码验证

时间:2011-10-24 11:03:18

标签: c# asp.net .net regex

我无法在不同国家/地区查找电话号码的正则表达式验证模式,并且没有时间尝试编写自己的电话号码并且希望正则表达式大师能够提供帮助。

我已经检查了像regexlib这样的常用来源,所以如果有人可以提供帮助,我会感激他们中的任何一个

我需要为以下各项提供单独的电话号码验证表达式:

  • 德国
  • US
  • 澳大利亚
  • 新西兰
  • 加拿大
  • 法国

4 个答案:

答案 0 :(得分:1)

格式为here

编写正则表达式并非易事,但如果指定规则,则不会很困难。

答案 1 :(得分:1)

不要使用精心设计的正则表达式来匹配您认为访问者输入电话号码的方式,而是尝试不同的方法。输入电话号码并删除符号。然后正则表达式可以很简单,只需检查10位数字(例如美国数字)。然后,如果您需要以一致的格式保存电话号码,请从10位数字中构建该格式。

此示例通过查找10位数字来验证美国电话号码。

protected bool IsValidPhone(string strPhoneInput)
{
// Remove symbols (dash, space and parentheses, etc.)
string strPhone = Regex.Replace(strPhoneInput, @”[- ()\*\!]“, String.Empty);

// Check for exactly 10 numbers left over
Regex regTenDigits = new Regex(@”^\d{10}$”); 
Match matTenDigits = regTenDigits.Match(strPhone);

return matTenDigits.Success;
}

答案 2 :(得分:1)

电话号码是一个号码,你要在那里验证什么?

Here你可以看到不同数字的样子。

并没有像亚洲这样的国家,这是一个有几个国家的大陆。

答案 3 :(得分:1)

几乎不可能获得涵盖所有国家的单一正则表达式。

我选择[0-9+][0-9() ]* - 这只是允许任何数字开始(或“+”字符),然后是数字或括号或空格的任意组合。


在一般验证中,任何进一步的验证都没有多大用处。如果要通过电话联系页面的用户,他们将输入有效的电话号码 - 如果没有,则他们不会。

更好的方法是强制执行正确的电话号码并消除最简单的误解是要求输入两次 - 然后用户可能至少检查一次!