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

问题描述 投票:0回答:1

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

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

  • 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

regex
1个回答
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]* - 零个或多个数字,-_或空格
  • $ - 字符串结束,
© www.soinside.com 2019 - 2024. All rights reserved.