gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 11:54:42 24 4
gpt4 key购买 nike

我正在尝试编写一个正则表达式来测试一个数字是否有效,有效的意思是任何与 country calling codes 匹配的数字而且电话号码的格式也由 ITU-T 在建议 E.164 中标准化。这指定整个号码应为 15 位或更短,并以国家/地区前缀开头,如 here 所示。所以我这样做了:

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

但是它不起作用。就我而言(VE 数字无法与正则表达式匹配,因为该数字以另一种方式进行验证)此输入是有效的:

+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

无效数字是指与正则表达式不匹配的数字以及以 +58 开头的数字,因为它们来自 VE。因此,继续,有效的号码应该具有:

  • +XX|+XXX 加 12|11 位数字(最少 5 位),其中 XX|XXX 是国家/地区代码,由于最多为 15 位数字,因此应为 12 或 11 位数字,具体取决于国家/地区格式

有人可以帮我解决这个问题吗?我称之为复杂

最佳答案

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

  • \d[0-9] 的简写 - 两者都可以使用,但我想知道为什么它们混合在一起
  • 您正在搜索的内容或 (|) 是“以 +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 的电话号码进行了完整的验证和格式化。

关于javascript - 用于在单词级别检查电话号码的表达式正则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25655788/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com