【发布时间】:2015-11-19 15:52:37
【问题描述】:
我正在尝试构建一个正则表达式以在 JS 中验证国际号码是否格式正确。
我认为一个数字的格式如下:'00'[国家][数字]。 “国家”和“数字”只是数字(不能以 0 开头)。 'country' 的大小为 {1-3},'country' + 'number' 小于 15。
我使用了这个错误的正则表达式:/^00[1-9][0-9]{0,2}[1-9][0-9]{0,11}$/ 我的问题是关于“数字”的大小取决于“国家”的大小。 'number' 的最大大小为 15-'country'.size
我该怎么做?
我看到What regular expression will match valid international phone numbers?,但数字大小固定为 15,与国家/地区大小无关。如果可能的话,通用方式(不提供所有国家/地区代码)应该会更好。
这里有一些必须与正则表达式匹配的示例
- 00111111111111111
- 001100
- 00111111111111111
- 00100100000000000
- 00101000000000000(我的正则表达式不匹配,因为在这种情况下,'country' = 2 and 'number' = 13)
和不匹配
- 00100010000000000 ('国家' = 4)
非常感谢
【问题讨论】:
-
(还有很多其他人)
-
我看到了,但我更喜欢(如果可能的话)有一个通用的方式,而不是给出国家代码列表。此外,在这些示例中,“数字”最大大小固定为 15,与国家/地区大小无关。
-
002010000000 有效,而 002010000000 无效。但这是相同的输入。那你怎么检查呢?
-
我不明白你的意思 Thomas 对不起。如果我们找到至少一种正则表达式与模型匹配的方式(您给出的第一个输入),那么结果是可以的,002010000000 匹配。但如果没有办法测试所有的可能性,那就没问题了。
-
我的意思是如果国家代码是 20 并且电话号码是 1000000 这是一个有效的号码,但是如果代码国家是 201 并且号码是 000000 它具有相同的表示 201000000 但它在一个有效案例而不是其他
标签: javascript regex