【问题标题】:How to make regex that validate country code in phone number如何制作验证电话号码中国家代码的正则表达式
【发布时间】:2013-11-16 08:19:28
【问题描述】:

我正在创建 asp.net regex validator,它应该使用国家代码验证手机号码。
号码可以是:+41 44 221 21 20 或 0041 44 221 21 20 或相同,但不带空格
我尝试了一些方法,但它不起作用:

\+(9[976]\d|8[987530]\d|6[987]\d|5[90]\d|42\d|3[875]\d|
2[98654321]\d|9[8543210]|8[6421]|6[6543210]|5[87654321]|
4[987654310]|3[9643210]|2[70]|7|1)
\W*\d\W*\d\W*\d\W*\d\W*\d\W*\d\W*\d\W*\d\W*(\d{1,2})$

如何为这个验证制作正则表达式?

【问题讨论】:

  • 我不会为此使用(单个)正则表达式。不同的有效电话号码的数量相当......荒谬。无论如何,如果我想验证一个国家代码是否有效,我会提取第一个数字(例如,作为一个简单的 \d),然后将其与 a list of valid codes 进行比较。然后,之后,可能应用许多启发式方法之一来确定数字的其余部分是否“可能有效”.. 或者只是说,“所有数字、破折号或空格 = 好的” .
  • @user2864740 应该作为答案发布,我相信。

标签: javascript asp.net regex validation


【解决方案1】:

假设您的国家/地区代码列表是正确的,以下应该有效:

^(\+|00)(9[976]\d|8[987530]\d|6[987]\d|5[90]\d|42\d|3[875]\d|2[98654321]\d|9[8543210]|8[6421]|6[6543210]|5[87654321]|4[987654310]|3[9643210]|2[70]|7|1)(\s?\d){9}$

匹配项可以以+00 开头,后跟国家/地区代码,然后是可以用空格分隔的9 个数字序列。

注意:如果您要在较长的字符串中匹配这些数字,请从正则表达式的末尾删除 ^$

Working on RegexPal

【讨论】:

    猜你喜欢
    • 2023-04-10
    • 1970-01-01
    • 2012-04-04
    • 1970-01-01
    • 2020-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多