首页 > 解决方案 > 如何为具有相同分隔符的 10 位电话号码创建正则表达式?

问题描述

我正在尝试创建一个基本的正则表达式来匹配可以使用点 [.] 或连字符 [-] 作为分隔符的电话号码。格式为 123.456.7890 或 123-456-7890。我目前使用的表达式是:

\d\d\d[-.]\d\d\d[-.]\d\d\d\d

这里的问题是它还匹配具有两个分隔符的电话号码,我希望将其称为无效/不匹配。例如,对于我的表达式,123.456-7890 和 123-456.7890 显示为匹配项,这是我不希望发生的事情。有没有办法做到这一点?

标签: regex

解决方案


使用反向引用:

^\d{3}([.-])\d{3}\1\d{4}$

这是正则表达式的解释:

^       from the start of the number
\d{3}   match any 3 digits
([.-])  then match AND capture either a dot or a dash separator
\d{3}   match any 3 digits
\1      match the SAME separator seen earlier
\d{4}   match any 4 digits
$       end of the number 

推荐阅读