我有一个正则表达式的问题,以检查(法语)电话号码是否正确。 电话号码必须从1开始,0继续1或2或3或4或5或9,并继续8个号码,但这些号码不能与00000000或11111111相同......
我目前的正则表达式:
/^0(1|2|3|4|5|9){1,1}[0-9]{8,8}/i
提前感谢您的帮助。
答案 0 :(得分:7)
您可以使用以下正则表达式:
/^0[1-59](?!(\d)\1{7}$)\d{8}$/i
有些观点:
{1,1}
与被删除一样好。{8,8}
与{8}
一样好。(1|2|3|4..)
可以替换为字符类 - [1234]
[12345]
可以替换为字符类中的范围 - [1-5]
上面的正则表达式使用负前瞻断言 - (?!(\d)\1{7})
断言前2个后面的8位数字并不完全相同。如果断言为真,则它匹配接下来的8位数。
(\d)
捕获第1组中的第一个数字\1
反向引用捕获的组以匹配\d
匹配的相同数字{7}
匹配反向引用7次。这意味着 - (\d)\1{7}
匹配相同的数字8次。