如何解决正则表达式电话号码[重复]
| 这个问题已经在这里有了答案:解决方法
这个怎么样:
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})$
, 我建议使用Google提供的libphonenumber:http://blog.appharbor.com/2012/02/03/net-phone-number-validation-with-google-libphonenumber
, 这可以选择匹配您的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})组,但不能同时捕获两者-必须在此处进行组合。
, 将工作分为几个步骤。
第一步必须是先删除+353、00 353、011 353,+ 353(0),00 353(0),011 353(0)或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部分。
不必担心用户输入不匹配的括号或随机标点。目的是确保用户输入正确的数字来制作有效的电话号码。提取并验证该数字,然后使用每个数字范围的正确格式规则对其进行清理以进行显示。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。