用于带扩展名的手机号码验证的正则表达式模式

Regex pattern for mobile number validation with extension

本文关键字:正则表达式 模式 验证 手机号码 扩展名 用于      更新时间:2023-09-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}$";

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

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

我建议这个表达:

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

查看正则表达式演示

表达式说明

  • ^ - 字符串的开头
  • '+? - 可选加号(因为?+匹配一次或零次)
  • (?: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 次出现)。