regex - 如何为具有相同分隔符的 10 位电话号码创建正则表达式?
问题描述
我正在尝试创建一个基本的正则表达式来匹配可以使用点 [.] 或连字符 [-] 作为分隔符的电话号码。格式为 123.456.7890 或 123-456-7890。我目前使用的表达式是:
\d\d\d[-.]\d\d\d[-.]\d\d\d\d
这里的问题是它还匹配具有两个分隔符的电话号码,我希望将其称为无效/不匹配。例如,对于我的表达式,123.456-7890 和 123-456.7890 显示为匹配项,这是我不希望发生的事情。有没有办法做到这一点?
解决方案
使用反向引用:
^\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
推荐阅读
- sql - 当 SELECT 语句没有返回任何行时,打印一条自定义消息
- curl - 仅使用 curl 获取 google Oauth2 访问令牌
- python - 如何在基于面部的考勤中为每一天创建一个单独的 CSV 文件,而不是覆盖现有的
- windows - Win10/Ubuntu16双启动系统如何将power BI连接到postgresql数据库?
- keras - 使用 keras image_dataset_from_directory 时如何添加标签?
- java - CSS中的背景图像属性不起作用
- timezone - Nuxt JS 在用户的时区显示日期和时间
- android - 如何在 Compose 函数的按钮单击中启动 Intent
- typescript - 如何从 Firebase Cloud Functions 中调用 Google Places API?
- php - Laravel 需要 2 次登录 1 基于 account_type 的表需要重定向不同的地方