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

时间:2014-09-28 11:49:56

标签: regex

我正在为阿联酋号码建立一个正则表达式。我设法运行了一些案例,但有些案例表明它没有验证所有案例。

这是我想出的。

要验证以:00971或+971开头的数字,表达式正常。

/^((\+971|00971){1}(2|3|4|6|7|9|50|51|52|55|56){1}([0-9]{7}))$/

e.g。 00971551234567

现在要验证从00971+971开始的数字,我将上面的表达式与上面的内容合并:

/^((050|051|052|055|056){1}([0-9]{7}))$/

e.g。 0551234567

问题

以下表达式无法验证电话号码,如041234567

/^((02|03|04|06|07|09){1}([0-9]{7}))$/

我尝试将所有表达式组合在一个表达式中,但它不起作用,然后我意识到只有上面的表达式没有工作。

         [Country][area][7 digit number]
Pattern: +971 55 1234567

表达式应该接受如下数字:

  • 00971551234567
  • +971551234567
  • +97141234567
  • 0551234567
  • 041234567

如何让我的正则表达式工作?

2 个答案:

答案 0 :(得分:4)

好像你想要这样的东西,

^(?:\+971|00971|0)?(?:50|51|52|55|56|2|3|4|6|7|9)\d{7}$

DEMO

> /^(?:\+971|00971|0)(?:2|3|4|6|7|9|50|51|52|55|56)[0-9]{7}$/.test("041234567")
true
> /^(?:\+971|00971|0)(?:2|3|4|6|7|9|50|51|52|55|56)[0-9]{7}$/.test("00971551234567")
true
> /^(?:\+971|00971|0)(?:2|3|4|6|7|9|50|51|52|55|56)[0-9]{7}$/.test("009715512345671")
false

> "041234567".match(/^(?:\+971|00971|0)?(?:50|51|52|55|56|2|3|4|6|7|9)\d{7}$/m); 
[ '041234567',
  index: 0,
  input: '041234567' ]

答案 1 :(得分:4)

我不知道阿联酋的数字格式,但是根据你的例子,我想出了以下内容:

^(?:\+971|0(0971)?)(?:[234679]|5[01256])[0-9]{7}$

Demo