JavaScript 正则表达式未将手机号码与国际代码匹配

标签 javascript regex

正在尝试根据正则表达式 /^((254|255)[0-9]+){9,15}$/ 验证手机号码 254777123456 ,手机号码应以指定的国家/地区代码为前缀,但手机号码的总长度不应超过 15 个字符,通过 javascript 执行此操作,我得到空值,任何人都可以指出我做错了什么。

PS。我使用的国家/地区代码比我指定的国家/地区代码多得多,我只是将这两个代码作为测试,然后再添加其他代码,因为它们都将由管道分隔。

最佳答案

你的正则表达式 ^((254|255)[0-9]+){9,15}$ 意味着,选择至少 4 位数字(其中前 3 位应该是 254255),并且它们的整体必须出现至少 9 次到最多 15 次,这意味着匹配的字符串的最小长度应为 36 个字符。这显然是你不想要的。您的正则表达式几乎不需要修正,您需要将 [0-9] 部分取出并单独使用 {9,12} 量词。使用的正确正则表达式应该是这样的,

^(?:(?:254|255)[0-9]{9,12})$

此正则表达式将分别匹配 254255 并将剩余数量限制为从 9 到 12 匹配(因为您希望匹配长度为 15 的最大数量,其中 3我们已经分离出的数字)

Demo

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/

相关文章:

r - 如何使用 stringr 和 regex 转换字符串(更改、保留、提取),但有一些异常(exception)?

java - 验证 JTextField 值,使其以 "RA"开头,然后包含 8 位数字

c# - 如何不匹配双空格?

php - 使用正则表达式验证类/方法名称

javascript - 单击提交按钮时按索引迭代数组 Ruby on Rails

javascript - 在 contenteditable 内部、子元素外部键入内容

java - 响应来自 Java 套接字的 AJAX 请求

javascript - Jquery:当主菜单悬停在子菜单项上时,停止发生效果

javascript - React JS 滚动优化

regex - 删除最后一次出现的字符