-2

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

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

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

4

2 回答 2

0

使用反向引用:

^\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 
于 2021-06-10T16:06:33.450 回答
0

您可以使用此正则表达式:

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

你可以看到它在这里工作。
这里的关键点是您使用方括号捕获您想要的字符([-.])
,然后通过反向引用重用它\1

于 2021-06-10T16:07:53.847 回答