1

我有一个像这样的正则表达式:-

^
 (\+?(?![0])\d{1,2})?
 (00\d{2})?
 ([0-9]{10,10})
$

我的测试数据如下:-

1. +447531234123 - pass
2. 447531234123 - pass
3. 00447531234123 - pass
4. 07531234123 - fail
5. 7531234123 - match

1-4都是正确的。#5是不正确的。+44, 44如果前面没有or ,我想让所有数字都失败0044。因此,如果前两组中的一个不匹配 - 第三组应该失败。

4

1 回答 1

2

看起来你在追求:

^(?:\+|00)?44\d{10}$

查看在线演示

  • ^- 开始线锚。
  • (?:- 打开非捕获组:
    • \+|00- 文字加号双零。
    • )?- 关闭非捕获组并使其成为可选。
  • 44\d{10}- 字面意思是 44 后跟 10 位数字。
  • $- 结束线锚。

编辑: 对于所有国家代码,而不是硬编码,44请使用:-

/^(?:\+|00)?([1-9]){2}?\d{9,10}$/
于 2021-05-11T12:53:59.207 回答