正则表达式验证10位电话号码



我有一个验证电话号码字段的用例,如果用户输入所有十位移动号码,如(111)111-1111/(999)999-9999,那么我们必须向用户显示一些错误消息。

在这里,我试图用这个正则表达式(([0-9])1{2})s1{3}-1{4}$验证这个场景,它正在验证是否有所有唯一的数字,但同时它给出了一个有效的电话号码,这是不期望的错误。

请分享你对这个正则表达式的想法来验证这个用例。

s看起来很可疑,因为在您试图匹配的电话号码格式中似乎没有任何空白。

看起来您可能在使用python,而且我对1样式组引用的细微差别不太熟悉。但是,使用普通正则表达式,我将按照如下方式匹配电话号码格式:

([0-9]{3})[0-9]{3}-[0-9]{4}

由于捕获组和反向引用,当所有数字都相同时,您的模式匹配。

你能做的是使用你的模式在一个负向前看断言,如果支持的话,以确保你的模式不会直接出现在右边,所以没有匹配。

那么你可以使用相同的模式,但然后匹配数字0-9。

注意,在示例数据中,模式中的s将不匹配。

^(?!(([0-9])1{2})1{3}-1{4}$)([0-9]{3})[0-9]{3}-[0-9]{4}$
  • ^起始字符串
  • (?!(([0-9])1{2})1{3}-1{4}$)负向前看断言不匹配模式只匹配相同的数字到右边
  • ([0-9]{3})[0-9]{3}-[0-9]{4}如果断言为真,相同的模式匹配数字0-9
  • $字符串结束

Regex演示

最新更新