用于在单词级别检查电话号码的正则表达式

Expression regular for check phone numbers at word level

本文关键字:电话号码 正则表达式 检查 单词级 用于      更新时间:2023-09-26

我正在尝试编写一个RegEx来测试一个号码是否有效,对于有效号码,我指的是任何与国家/地区呼叫代码匹配的号码,但也指ITU-T在建议E.164中对电话号码格式进行标准化的号码。这规定了整个数字应该是15位或更短,并以国家前缀开头,正如这里所说的,所以我这样做了:

^'+'d{2}|'d{3}([0-9])'d{7}$

但它不起作用。在我的情况下(VE号码与RegEx不匹配,因为这个号码是以另一种方式验证的),这个输入是有效的:

+1420XXXXXXXXXXX // Slovakia - X is a digit and could be more, tough, 5 minimum
001420XXXXXXXXXX // Slovakia - I've changed from + to 00
420XXXXXXXXXXXXX // Slovakia - I've removed the 00 o + but number still being valid
+40XXXXXXXXXXXXX // Romania

无效号码是指与RegEx不匹配的号码和以+58开头的号码,因为它们来自VE

  • +XX|+XXX加上12|11位数字(最少5位),其中XX|XXX是国家代码,由于最大值为15位,因此根据国家格式应为12或11位数字

有人能帮我吗?这是一个我称之为复杂

的问题

正则表达式中发生了一些奇怪的事情:

  • 'd[0-9]的简写-两者都可以使用,但我想知道它们为什么混合使用
  • 你要搜索的OR(|)是"以+XX开头的东西",即加号和两个数字(^'+'d{2})或"以XXXXXXXXXXX结尾的东西"即11个数字('d{3}([0-9])'d{7}$
    • 你需要将OR选项分组(用括号),否则它就是向左或向右的所有选项(简单地说)
    • ^'+('d{2}|'d{3})([0-9])'d{7}$

然而,还有另一种给出出现次数的方法:{m,n}表示出现在mn之间。所以你可以说^'+'d{7,15}$(其中7是你的最低5+最低国家代码2)。

然而,要真正做到这一点,你可能需要看看这里(https://code.google.com/p/libphonenumber/1)对所有可用的javascript电话号码进行完整的验证和格式化。