正则表达式,用于排除特殊字符的电话号码

时间:2015-10-19 06:04:29

标签: javascript c# regex

我正在使用正则表达式来表示电话号码。它允许至少10位数字,包括+() -

等特殊字符
+1(33)-489256

我正在使用的正则表达式是:

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

它运作正常,但不应允许电话号码中的其他特殊字符,如#@ $%

请告诉我如何更新我的正则表达式。

2 个答案:

答案 0 :(得分:3)

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

只是指出你的正则表达式问题

\D:除数字

以外的任何字符

答案 1 :(得分:1)

正则表达式中的问题是\D*,这会与任何非数字字符(包括特殊字符)匹配任意次。

使用

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

Regex Demo and Explanation

  1. /:正则表达式字面的分隔符
  2. ^:以锚
  3. 开头
  4. \+\d{1,3}+
  5. 后的一至三位数字
  6. \d:匹配单个数字
  7. \(:按字面意思匹配(
  8. \d{2}:正好匹配两位数字
  9. \):按字面意思匹配)
  10. -:按字面意思匹配-
  11. \d{6}:正好匹配六位数字
  12. $:以锚点结束
  13. 现场演示

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