标签: regex
我有这个正则表达式
^(?:[\+971|00971|0]*)((?:2|3|4|5|6|7|9|50|51|52|55|56)[0-9]{7,})
会接受这些电话号码
009715060403341 05060403341 +9715060403341
但是,我不想接受这些数字
009712060403341 02060403341 +9712060403341
所以第二个非捕获组不应该以2开头。这就是条件。
任何人都可以帮忙解决这个问题吗?
答案 0 :(得分:1)
使用否定前瞻来检查第二次非捕获匹配的数字是否从2开始。并删除第一个非捕获组中存在的方括号。
^(?:\+971|00971|0)(?!2)((?:2|3|4|5|6|7|9|50|51|52|55|56)[0-9]{7,})$
DEMO
或强>
只需从第二个非捕获组中删除2。
2
^(?:\+971|00971|0)((?:3|4|5|6|7|9|50|51|52|55|56)[0-9]{7,})$