【问题标题】:Regular Expression for a phone number excluding special characters不包括特殊字符的电话号码的正则表达式
【发布时间】:2015-10-19 06:04:29
【问题描述】:

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

+1(33)-489256

我使用的正则表达式是:

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

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

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

【问题讨论】:

  • 你能添加所有可能有效的电话号码格式吗

标签: javascript c# regex


【解决方案1】:
^\D*(?:\d\D*){10,}$
         ^^
       [+()-]

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

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

【讨论】:

  • 如何将这些正则表达式写在一行中?我的电话号码方案是,用户应该能够只输入普通电话号码(至少应为 10 位数字),例如:1234567899 或包含这些特殊字符 +()- 以格式化数字 +1 (234)567-899(但不应允许其他特殊字符,如 @#$%
【解决方案2】:

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

使用

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

Regex Demo and Explanation

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

现场演示

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

【讨论】:

  • 这种模式使我所有的电话号码都无效。 :-(
  • @RobG 你能举个例子吗
  • 大概 + 代表国家代码并期望像 +1(23) 之类的东西,可能是国家后跟地区。安道尔的国家代码为 376,安圭拉 1264。我见过的最强大的电话号码输入表格将国家代码作为电话号码的单独字段,并允许格式化空格(它们可以在后端剥离)。跨度>
  • @RobG 感谢您的信息。更新
  • 您好 Tushar,感谢您的回复。我的电话号码方案是用户应该能够只输入普通电话号码(至少 10 位数字),例如:1234567899 或包含这些特殊字符 +()- 以格式化号码 +1(234 )567-899(但不应允许其他特殊字符,如@#$% 请回复
猜你喜欢
  • 1970-01-01
  • 2019-09-10
  • 2021-09-28
  • 2013-08-06
  • 2013-04-14
  • 1970-01-01
  • 2020-07-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多