首页 > 解决方案 > 电话号码的 Javascript 正则表达式

问题描述

我完成了这项工作并编写了以下正则表达式:

/^([0-9.]+)$/

这满足以下条件:

123.123.123.132
123123213123

现在我需要为这个正则表达式添加一个功能,它可以在电话号码中有一个字母,比如

123.a123.b123.123

但不是

123.aa1.bb12

我试过了

/^([0-9.]+\w{1})$/

.(点)符号之间只能包含一个字母。有人可以帮我解决这个问题吗!!!

提前致谢 !!

标签: javascriptregex

解决方案


您使用的模式^([0-9.]+)$使用一个字符类,它将匹配任何列出的字符并重复 1 次以上,例如123.123.123.132.

这有点广泛匹配,没有考虑匹配字符的位置。

如果您的值以 1+ 位数字开头,并且可选的 az 可以在点之后,您可以使用:

^\d+(?:\.[a-zA-Z]?\d+)*$

解释

  • ^字符串的开始
  • \d+匹配 1+ 个数字
  • (?:非捕获组
    • \.[a-zA-Z]?\d+匹配一个点,后跟可选的 a-zA-Z 和 1+ 个数字
  • )*关闭组并重复 0+ 次
  • $字符串的结尾

查看regex101 演示


推荐阅读