正在尝试根据正则表达式 /^((254|255)[0-9]+){9,15}$/
验证手机号码 254777123456
,手机号码应以指定的国家/地区代码为前缀,但手机号码的总长度不应超过 15 个字符,通过 javascript 执行此操作,我得到空值,任何人都可以指出我做错了什么。
最佳答案
你的正则表达式 ^((254|255)[0-9]+){9,15}$
意味着,选择至少 4 位数字(其中前 3 位应该是 254
或 255
),并且它们的整体必须出现至少 9 次到最多 15 次,这意味着匹配的字符串的最小长度应为 36 个字符。这显然是你不想要的。您的正则表达式几乎不需要修正,您需要将 [0-9]
部分取出并单独使用 {9,12}
量词。使用的正确正则表达式应该是这样的,
^(?:(?:254|255)[0-9]{9,12})$
此正则表达式将分别匹配 254
或 255
并将剩余数量限制为从 9 到 12 匹配(因为您希望匹配长度为 15 的最大数量,其中 3我们已经分离出的数字)
var nums = ['254777123456','255777123456','255777123456123','2557771234561231']
for (n of nums) {
console.log(n + " --> " + /^(?:(?:254|255)[0-9]{9,12})$/g.test(n));
}
关于JavaScript 正则表达式未将手机号码与国际代码匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54705200/