欧盟增值税号码的简单正则表达式

时间:2017-09-25 11:58:51

标签: regex

我需要一个正则表达式来验证欧盟增值税号码。有一些,但它们都是每个成员国特定的,我不需要它如此具体。所以需要用户输入一定长度的字符,其中第一个字符必须是字母,并且允许使用某些字母的休息数字就足够了。

所以基本上我需要匹配以下

  • 2-4个第一个字符必须是字母
  • 其余可以是数字,也可以包含数字中最多2个字母
  • 忽略连字符(某些成员国使用连字符)
  • 忽略空格和下划线(因为用户)

到目前为止,我有以下内容,哪种方式可以胜任,但遗憾的是还只使用字母匹配输入(ABCDEFGHIJKLMNOP)link

([A-Za-z]{2,4})([a-zA-Z0-9\-\_ ]{2,12})

您可以在此处查看所有增值税号码的格式。 https://www.gov.uk/guidance/vat-eu-country-codes-vat-numbers-and-vat-in-other-languages

2 个答案:

答案 0 :(得分:1)

您可以使用

^[A-Za-z]{2,4}(?=.{2,12}$)[-_\s0-9]*(?:[a-zA-Z][-_\s0-9]*){0,2}$

请参阅regex demo

<强>详情

  • ^ - 字符串开头
  • [A-Za-z]{2,4} - 2到4个ASCII字母
  • (?=.{2,12}$) - 然后,字符串的末尾必须有2到12个字符(字符串的数量并不重要,我们只是在这里查看其余字符串的长度)
  • [-_\s0-9]* - 零个或多个数字,-_或空白
  • (?:[a-zA-Z][-_ 0-9]*){0,2} - 0到2个连续序列:
    • [a-zA-Z] - ASCII字母
    • [-_\s0-9]* - 零个或多个数字,-_或空白
  • $ - 字符串结束,

答案 1 :(得分:1)

有一个python模块来验证增值税号。它内部有一系列正则表达式。我个人一直在使用它,它非常准确。你可能想看看:https://pypi.org/project/vatnumber/