【问题标题】:Regex pattern for mobile number validation with extension带有扩展名的手机号码验证的正则表达式模式
【发布时间】:2016-07-08 22:10:26
【问题描述】:

我对我的要求进行了单独的正则表达式验证,但很难将它们组合在一起。 我正在验证带有国家代码或以 00 开头的手机号码,并且它们是否包含以 # 分隔的分机号(2-5 位)

以下是有效数字的示例:

+919986040933
00919986040933
+919986040933#12
+919986040933#123
+919986040933#1234
+919986040933#12345

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

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

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

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

【问题讨论】:

  • 类似this?
  • (?:\+91|00)\d{10}(?:#\d{2,5})?

标签: javascript angularjs regex ng-pattern


【解决方案1】:

我建议这样表达:

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

regex demo

表达式解释

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

phoneRegexWithPlusphoneRegexWithZero 包含在第一个必填部分 \+?(?:00)?\d{12} 中匹配 12 到 14 位数字,开头带有可选的加号。

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

【讨论】:

  • 请注意,您的正则表达式将捕获: +00111111111111 ,这不是必需的情况之一
  • @Jumpa:查看 OP 正则表达式,they match the same 并且对于数字的顺序是什么或数字中可以或不能出现的数字没有限制。我所做的只是将这些模式合并为一个模式。
猜你喜欢
  • 2014-04-18
  • 1970-01-01
  • 2018-07-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-22
  • 1970-01-01
相关资源
最近更新 更多