Reg表达式:GB Vat Number with spaces

时间:2018-02-14 18:15:15

标签: regex html5 expression

我目前有以下正则表达式:

^GB([0-9]{9}([0-9]{3})?|[A-Z]{2}[0-9]{3})$

这适用于:

  • GB999999973
  • GBGD001
  • GBHA599

可在此处测试:https://regex101.com/r/jU980W/1

然而问题是它没有验证:

  • GB999 9999 73

我尝试在正则表达式中添加空格指示符,但不再支持其他格式。

有没有人知道如何让这个正则表达式同时接受GB VAT编号的空格和没有空格?

提前致谢!

1 个答案:

答案 0 :(得分:3)

See regex in use here

^GB(?:\d{3} ?\d{4} ?\d{2}(?:\d{3})?|[A-Z]{2}\d{3})$
  • ^在行首处断言位置
  • GB按字面意思匹配
  • (?:\d{3} ?\d{4} ?\d{2}(?:\d{3})?|[A-Z]{2}\d{3})匹配以下任一选项
    • \d{3} ?\d{4} ?\d{2}(?:\d{3})?选项1:
      • \d{3}正好匹配3位数字
      • ?可选择匹配空格
      • \d{4}正好匹配4位数字
      • ?可选择匹配空格
      • \d{3}正好匹配2位数字
      • (?:\d{3})?可选择完全匹配3位数字
    • [A-Z]{2}\d{3}选项2:
      • [A-Z]匹配任何大写的ASCII字母
      • \d{3}正好匹配3位数字
  • $断言行尾的位置