阿联酋电话号码正则表达式

时间:2015-03-16 11:37:48

标签: 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开头。这就是条件。

任何人都可以帮忙解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

使用否定前瞻来检查第二次非捕获匹配的数字是否从2开始。并删除第一个非捕获组中存在的方括号。

^(?:\+971|00971|0)(?!2)((?:2|3|4|5|6|7|9|50|51|52|55|56)[0-9]{7,})$

DEMO

只需从第二个非捕获组中删除2

^(?:\+971|00971|0)((?:3|4|5|6|7|9|50|51|52|55|56)[0-9]{7,})$

DEMO