【问题标题】:UAE Phone number regex阿联酋电话号码正则表达式
【发布时间】:2015-03-16 11:37:47
【问题描述】:

我有这个正则表达式

^(?:[\+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 开头。这就是条件。

谁能帮忙解决这个问题?

【问题讨论】:

    标签: regex


    【解决方案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

    【讨论】:

    • 感谢@Avinash 的大力帮助 - 你能告诉我我应该如何为负前瞻设置 OR 条件吗?即,如果我不想在 4 之前开始第二个非捕获组?
    • ^(?:\+971|00971|0)(?!2|4)((?:2|3|4|5|6|7|9|50|51|52|55|56)[0-9]{7,})$,如果这个答案有帮助,请接受..
    猜你喜欢
    • 2021-05-17
    • 1970-01-01
    • 2017-09-23
    • 2014-02-15
    • 2016-02-02
    • 2011-12-14
    • 2013-05-26
    • 1970-01-01
    相关资源
    最近更新 更多