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}$
看
图案细节:
-字符串的开头^
-第1组匹配两个备选方案之一:(\(\d{3}\)\d{3}-
-\(\d{3}\)
后跟3位数字和一个文本(
)
-或|
-3位数字和一个文本\d{3}-
-
-8位数字\d{8}
-字符串结束$
根据正则表达式引擎的不同,
\d
可能需要替换为[0-9]
来编写一个真正的正则表达式,您可以更努力一点。您听说过say
交替运算符吗?我编写了一个正确的正则表达式,如(\(\d{3})\[^(]\d{3}-\d{8}
,可以满足我的需要。很好,但我认为(\(\d{3})d}){3} )-\d{8}$
会更好,除非你在需要完全字符串匹配的正则表达式方法中使用它(例如Javamatches()
,或HTML5模式)。你在哪里使用正则表达式?它不是完美的(也可以用单括号),但是一个开始:哦,我的意思是(\(\d{3}\)\d{3}-[0-9]{code>或(\d{3}){1243}{d})[0-9]{8}$
-连字符必须是可选字符的一部分。