我有一个验证电话号码字段的用例,如果用户输入所有十位移动号码,如(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演示