不包含特殊字符的电话号码正则表达式

本文关键字:电话号码 正则表达式 特殊字符 包含 | 更新日期: 2023-09-27 18:18:20

我使用正则表达式表示电话号码。它允许至少10个数字,包括特殊字符,如+()-

+1(33)-489256

我使用的正则表达式是:

^'D*(?:'d'D*){10,}$

它工作正常,但它不应该允许在电话号码中使用其他特殊字符,如#@$%

请让我知道如何更新我的正则表达式。

不包含特殊字符的电话号码正则表达式

^'D*(?:'d'D*){10,}$
         ^^
       [+()-]

指出你的正则表达式问题

'D:除数字以外的任何字符

您的regex中的问题是'D*,这将匹配任何非数字字符(包括特殊字符)的任意次数。

使用

/^('+'d{1,4})?('d{2}')-'d{6}$/

Regex演示与说明

  1. /:正则表达式的分隔符
  2. ^:从锚开始
  3. '+'d{1,3}: +
  4. 后1 ~ 3位
  5. 'd:匹配个位数
  6. '(:匹配(
  7. 'd{2}:完全匹配两个数字
  8. '):匹配)
  9. -:匹配-
  10. 'd{6}:匹配六位数字
  11. $:以锚结束

现场演示

input:valid {
  color: green;
}
input:invalid {
  color: red;
}
<input type="text" pattern="('+'d{1,4})?'('d{2}')-'d{6}" />