Regex号码电话

本文关键字:电话 号码 Regex | 更新日期: 2023-09-27 17:57:54

我的单词(电话号码)可能以"00"或"+"开头。

示例号码电话:

00xxx xx xxxxxxx
+xxx xx xxxxxxx
(+xxx) xx xxxxxxx
(00xxx) xx xxxxxxx

我有:

Regex regexObj = new Regex(@"^'(?[+( ]?([0-9]{3})')?[) ]?([0-9]{2})[- ]?([0-9]{7})$");
if (regexObj.IsMatch(TextBox1.Text))
{
    // IF OK
    string formattedPhoneNumber = regexObj.Replace(TextBox1.Text, "(+$1) $2 $3");
}

如何把它放在正则表达式中?现在我只能放"+"answers"(",")"

感谢

Regex号码电话

我建议使用谷歌的libphonenumber:http://blog.appharbor.com/2012/02/03/net-phone-number-validation-with-google-libphonenumber

这个怎么样:

Regex regexObj = new Regex(@"^(?:'(?)(?:'+|0{2})([0-9]{3})')? ([0-9]{2}) ([0-9]{7})$");

编辑:

^(?:'((?:'+|00)([0-9]{3})')|(?:'+|00)([0-9]{3}))? ([0-9]{2})[- ]?([0-9]{7})$

这可以选择匹配您的4个不同的电话前缀,后跟2位数字,后跟7位数字。

(?:(00'd{3})|('+'d{3})|('('+'d{3}'))|('(00'd{3}')))'s('d{2})'s('d{7})

使用您的示例进行测试:

Regex regexObj = new Regex(@"^(?:(?:'+|00)([0-9]{3})|'((?:'+|00)([0-9]{3})'))[- ]?([0-9]{2})[- ]?([0-9]{7})$");
if (regexObj.IsMatch(TextBox1.Text))
{
    //IF OK
    string formattedPhoneNumber = regexObj.Replace(TextBox1.Text, "(+$1$2) $3 $4");
}

说明:

(?:'+|00):+00-无捕获

(?:(?:'+|00)([0-9]{3})|'((?:'+|00)([0-9]{3})')):+xxx或00xxx或(+xxx)或(00xxx),仅捕获数字。区分()的匹配很重要,这样,如果包含括号,则两个匹配都必须存在(即(+999 99 9999999无效。

"(+$1$2) $3 $4":匹配将捕获第一组或第二组([0-9]{3}),但不能同时捕获两者-必须在此处将它们组合。

将作业分解为几个步骤。

第一步必须去掉+3353、00 353、011 353、+353(0)、00 353(0)和011 353(0。

  Pattern: ^('(?(?:0(?:0|11)')?['s-]?'(?|'+)(353)')?['s-]?)?'(?0?(?:')['s-]?)?([1-9]'d{1,4}')?['d's-]+)((?:x|ext'.?|'#)'d{3,4})?$

使用上面的模式从$2中提取"353",以知道使用了国际格式,否则,如果$2为空,则假设使用国家格式。

从$4中提取可选的分机号详细信息,并将其存储以备日后使用。

从$3中提取NSN(包括空格、连字符和括号)。

删除这些空格、连字符和括号,并使用另一种更详细的RegEx模式,通过长度和初始数字验证NSN部分。

不要担心用户输入不匹配的括号或随机标点符号。目标是确保用户输入正确的数字,以生成有效的电话号码。提取并验证该数字,然后使用每个数字范围的正确格式规则将其清除以供显示。