代码之家  ›  专栏  ›  技术社区  ›  Rafaël De Jongh

Reg表达式:带空格的GB Vat编号

  •  1
  • Rafaël De Jongh  · 技术社区  · 7 年前

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

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

    这适用于:

    • GB99999973
    • GBGD001
    • GBHA599

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

    但问题是,它无法通过以下方式进行验证:

    • GB999 9999 73

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

    有没有人知道一种方法可以让这个正则表达式同时接受GB VAT编号的带空格和不带空格?

    提前感谢!

    1 回复  |  直到 7 年前
        1
  •  3
  •   ctwheels    7 年前

    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位数字
    • $ 在行尾断言位置