Regex number phone
我的话(电话号码)可能在开头"00"或"+"。
电话号码示例:
1 2 3 4 | 00xxx xx xxxxxxx +xxx xx xxxxxxx (+xxx) xx xxxxxxx (00xxx) xx xxxxxxx |
我有:
1 2 3 4 5 6 7 | 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"); } |
如何把它放在正则表达式中? 现在我只能把"+"和"(",")"放进去
谢谢
我建议使用Google的libphonenumber:http://blog.appharbor.com/2012/02/03/net-phone-number-validation-with-google-libphonenumber
将工作分成几个步骤。
第一步必须是在调查其余数字之前剥离+ 353,003 353,011 353,+ 353(0),00 353(0),011 353(0)或0前缀。
1 | Pattern: ^(\(?(?:0(?:0|11)\)?[\s-]?\(?|\+)(353)\)?[\s-]?)?\(?0?(?:\)[\s-]?)?([1-9]\d{1,4}\)?[\d\s-]+)((?:x|ext\.?|\#)\d{3,4})?$ |
使用上述模式从$ 2中提取'353'以了解使用的是国际格式,否则假设$ 2为null时采用国家格式。
从$ 4中提取可选的分机号码详细信息并存储起来供以后使用。
从$ 3中提取NSN(包括空格,连字符和括号)。
删除这些空格,连字符和括号,并使用另一个更详细的RegEx模式来验证数字的NSN部分的长度和初始数字。
不要担心用户输入不匹配的括号或随机标点符号。目标是确保用户输入正确的数字位数以生成有效的电话号码。提取并验证该数字,然后使用每个数字范围的正确格式规则对其进行清理以进行显示。
测试了您的示例:
1 2 3 4 5 6 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"); } |
说明:
这个怎么样:
1 |
编辑:
1 | ^(?:\((?:\+|00)([0-9]{3})\)|(?:\+|00)([0-9]{3}))? ([0-9]{2})[- ]?([0-9]{7})$ |
这可选择匹配您的4个不同的电话前缀,后跟2个数字,然后是7个数字。