具有扩展名的移动号码验证的正则表达式模式

时间:2016-07-08 13:20:58

标签: javascript angularjs regex ng-pattern

我对我的要求进行了单独的正则表达式验证,但很难将它们组合在一起。 我正在使用国家/地区代码验证手机号码或以00开头,如果它们包含分机号码(2-5位),则由#

分隔

以下是有效数字的示例:

var phoneRegexWithPlus = "^((\\+)|(00))[0-9]{10,14}$";
var phoneRegexWithZero = "^((\\+)|(00))[0-9]{9,12}$";
var phoneRegexExtension = "^[0-9]{2,5}$";

我有以下正则表达式来验证上述内容:

{{1}}

目前我正在检查数字是否包含#,如果是,则将其拆分并分别匹配数字和扩展部分,其中扩展是哈希后的扩展。

我现在的问题是我必须创建一个结合上述三个的正则表达式,任何人都可以帮助我,因为正则表达式不好。 提前谢谢。

1 个答案:

答案 0 :(得分:1)

我建议这个表达:

^\+?(?:00)?\d{12}(?:#\d{2,5})?$

请参阅regex demo

表达式解释

  • ^ - 字符串开头
  • \+? - 可选加号(?匹配+一次或零次)
  • (?:00)? - 可选的00
  • \d{12} - 正好是12位数的字符串
  • (?:#\d{2,5})? - 一个可选的(再次,?匹配一次或零次)序列:
    • # - 文字哈希符号
    • \d{2,5} - 2至5位数(您的 phoneRegexExtension
  • $ - 字符串结束。

phoneRegexWithPlus phoneRegexWithZero 涵盖第一个必修部分\+?(?:00)?\d{12}匹配12到14位数字,开头有可选的加号。

注意:正则表达式会根据您提供的示例输入进行调整。如果不同,请调整限制量词{12}(可以替换为{9,14},以匹配量化模式的9到14次)。