c# - 国际和本地电话号码的 asp.net 正则表达式

标签 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}?)$

最佳答案

嗨,关于你是正则表达式的一些评论

[\+]{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
}

关于c# - 国际和本地电话号码的 asp.net 正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18584492/

相关文章:

javascript - 正则表达式在 JavaScript 字符串中返回未定义

javascript - 正则表达式拆分 Camel 案例

python - 在 Python 中从字符串中删除反斜杠

c# - 如何查找英里范围内的邮政编码?

html - Sidebaroverlapping 在内容占位符中创建的 Div,我该如何防止它?

c# - 文件上传读取到内存并用作文本文件 - 有更好的方法吗?

javascript - 如何使用javascript检查是否启用了java插件?

c# - 在保留插入符号的同时替换文档中的文本

c# - 替换 NetCore 1.0 中的 Array.ConvertAll

c# - 加载时更改页面 css 文件