Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 需要正则表达式来匹配电话号码_Regex - Fatal编程技术网

Regex 需要正则表达式来匹配电话号码

Regex 需要正则表达式来匹配电话号码,regex,Regex,我想匹配表达式,如(010)12345678或010-12345678。现在我的正则表达式是\(?\d{3}[)-]\d{8},但它与(010-12345678)之类的表达式匹配。我应该如何编写真正的正则表达式 编辑: 我编写了一个合适的正则表达式,如(\(\d{3}\)\124;[^(]\ d{3}-\d{8},可以满足我的需要。注意,(\(\d{3}\)[^(]\d{3}-\d{8}也将匹配一个非()数字,因为() 您需要删除它并使用它 (\(\d{3}\)|\d{3}-)\d{8} ^^^

我想匹配表达式,如
(010)12345678
010-12345678
。现在我的正则表达式是
\(?\d{3}[)-]\d{8}
,但它与
(010-12345678
)之类的表达式匹配。我应该如何编写真正的正则表达式

编辑:


我编写了一个合适的正则表达式,如
(\(\d{3}\)\124;[^(]\ d{3}-\d{8}
,可以满足我的需要。

注意,
(\(\d{3}\)[^(]\d{3}-\d{8}
也将匹配一个非
)数字,因为

您需要删除它并使用它

(\(\d{3}\)|\d{3}-)\d{8}
^^^^^^^^^^^^^^^^^^
请参阅。或锚定版本:

^(\(\d{3}\)|\d{3}-)\d{8}$

图案细节

  • ^
    -字符串的开头
  • (\(\d{3}\)\d{3}-
    -第1组匹配两个备选方案之一:
    • \(\d{3}\)
      -
      后跟3位数字和一个文本
    • |
      -或
    • \d{3}-
      -3位数字和一个文本
      -
  • \d{8}
    -8位数字
  • $
    -字符串结束

根据正则表达式引擎的不同,
\d
可能需要替换为
[0-9]

来编写一个真正的正则表达式,您可以更努力一点。您听说过say
交替运算符吗?我编写了一个正确的正则表达式,如
(\(\d{3})\[^(]\d{3}-\d{8}
,可以满足我的需要。很好,但我认为
(\(\d{3})d}){3} )-\d{8}$
会更好,除非你在需要完全字符串匹配的正则表达式方法中使用它(例如Java
matches()
,或HTML5模式)。你在哪里使用正则表达式?它不是完美的(也可以用单括号),但是一个开始:哦,我的意思是
(\(\d{3}\)\d{3}-[0-9]{code>或
(\d{3}){1243}{d})[0-9]{8}$
-连字符必须是可选字符的一部分。