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

pAt*_*pAt 2 regex

我正在为阿联酋号码建立正则表达式。我设法运行了少数情况,但有些情况并未验证所有情况。

这是我想出的。

要验证以下开头的数字:00971或+971,可以正常工作。

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

例如 00971551234567

现在要验证以00971或开头的数字+971,我将下面的表达式与上面的值相结合:

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

例如 0551234567

问题

下面的表达式以某种方式无法验证041234567之类的电话号码

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

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

         [Country][area][7 digit number]
Pattern: +971 55 1234567
Run Code Online (Sandbox Code Playgroud)

表达式应接受数字,例如:

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

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

Avi*_*Raj 6

好像您想要这样的东西,

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

演示

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