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"(",")"
感谢
我建议使用谷歌的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部分。
不要担心用户输入不匹配的括号或随机标点符号。目标是确保用户输入正确的数字,以生成有效的电话号码。提取并验证该数字,然后使用每个数字范围的正确格式规则将其清除以供显示。