regex检查电话号码

regex to check phone number

本文关键字:电话号码 检查 regex      更新时间:2023-09-26

我正在尝试构建一个正则表达式,以在JS中验证国际数字是否格式正确。

我认为一个数字的格式如下:"00"[国家][数字]。"country"answers"number"只是数字(不能以0开头)。"country"的大小为{1-3},"country’+"number"为<15.

我使用了错误的正则表达式:/^00[1-9][0-9]{0,2}[1-9][0-9}{0,11}$/我的问题是"数字"的大小取决于"国家"的大小。"数字"的最大大小为15-"国家"。大小

我该怎么做?

我明白了,什么正则表达式能匹配有效的国际电话号码?但数字大小固定为15,不取决于国家大小。如果可能的话,通用的方式(不提供所有国家的代码)应该更好。

这里有一些必须与正则表达式匹配的示例

  • 00111111111111111
  • 001100
  • 00111111111111111
  • 00100100000000000
  • 00101000000000000(我的正则表达式与之不匹配,因为在这种情况下,"country"=2,"number"=13)

与不匹配

  • 00100010000000000("国家"=4)

Thx大量

使用此模式

^00(?=[1-9]'d{0,2}[1-9])(?='d{2,15}$)'d+$

以下是的解释

^00字符串应以00开头。

(?=[1-9]'d{0,2}[1-9])确保我们在最多两个数字之后有一个非零数字。

(?='d{2,15}$)确保我们至少有2位数字,最多有15位数字,这是国家和号码的最小和最大长度。

'd+匹配所有剩余数字。

因为我不知道"country"的大小,所以我假设所有可能的情况(0、1或2),并推断出"number"的大小。:

^00[1-9][1-9][0-9]{0,13}$|^00[1-9][0-9][1-9][0-9]{0,12}$|^00[1-9][0-9]{2}[1-9][0-9]{0,11}$