我需要一个正则表达式来验证欧盟增值税号码。有一些,但它们都是每个成员国特定的,我不需要它如此具体。因此需要用户输入一定长度的字符,其中第一个字符必须是字母,并且允许使用某些字母的休息数字就足够了。
所以基本上我需要匹配以下内容
到目前为止,我有以下,哪种工作,但不幸的是也匹配输入只有字母(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
你可以用
^[A-Za-z]{2,4}(?=.{2,12}$)[-_\s0-9]*(?:[a-zA-Z][-_\s0-9]*){0,2}$
细节
^
- 字符串的开头[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]*
- 零个或多个数字,-
,_
或空格$
- 字符串结束,