asp.net for International&的正则表达式本地电话号码

时间:2013-09-03 05:10:50

标签: c# asp.net regex

我正在使用以下正则表达式来涵盖国际电话号码&一些本地电话号码只能采用这种格式

国际电话号码

+123 456789123
+123456789123

+12 3456789123
+123456789123

本地电话号码格式(手机号码后跟固定电话号码)

1234567890      
123 4567890

123123456
12 3123456

正在使用的正则表达式

^[\+]{0,1}[1-9]{1}[0-9]{7,11}$

此正则表达式适用于国际号码,无论是否添加前缀+,但不允许任何空格字符。

我希望它支持以上格式,如示例所示,并且还应支持所有国际电话号码

我正在使用asp.net,以防万一有人想知道。

更新

我最终使用了以下Regex,它也处理扩展

^([\+]?[0-9]{1,3}[\s.-][0-9]{1,12})([\s.-]?[0-9]{1,4}?)$

3 个答案:

答案 0 :(得分:4)

你好评论你是正则表达式

[\+]{0,1} could be \+?  // easier to read, + as optional
[1-9]{1} could be writen as [1-9]
[0-9]{7,11} should be [0-9\s.-]{7,11}  // phone numbers van contain - or .

你总是正则表达式

^\+?[1-9][0-9\s.-]{7,11}$

电话号码可以写为

  • 070-3233123
  • 070.3233123

第二次尝试

你可以通过两个步骤解决问题:

首先通过增加11到20的范围来匹配可能的电话号码

^\+?[1-9][0-9\s.-]{7,20}$

下一步是删除非数字并验证长度在8到12之间

string phone = "070.3233123";

string onlyNumbers= new String(phone.ToCharArray().Where(c => Char.IsDigit(c)).ToArray());

if (onlyNumbers.length > 8 &&  onlyNumbers.length < 12)
{
    // we got a winner
}

答案 1 :(得分:2)

试试这个:

^[\+]?[1-9]{1,3}\s?[0-9]{6,11}$

答案 2 :(得分:-1)

以下模式将验证以下格式

^\s*\+?[0-9]\d?[- .]?(\([2-9]\d{2}\)|[2-9]\d{2})[- .]?\d{3}[- .]?\d{4}$

<强>结果

+1 (281) 388 0388
+65 281 388-0388
+91 281 388 0388
+65 2813880388
+652813880388
+65(281)3880388
+65281388-0388
+1281388-0388