增值税号码HTML5表格模式

时间:2017-08-21 00:08:03

标签: regex html5 forms design-patterns

因此,当用户注册时,我必须验证欧洲增值税号码。 我已经设置了以下模式:

^((AT)?U[0-9]{8}|(BE)?0[0-9]{9}|(BG)?[0-9]{9,10}|(CY)?[0-9]{8}L|(CZ)?[0-9]{8,10}|(DE)?[0-9]{9}|(DK)?[0-9]{8}|(EE)?[0-9]{9}|(EL|GR)?[0-9]{9}|(ES)?[0-9A-Z][0-9]{7}[0-9A-Z]|(FI)?[0-9]{8}|(FR)?[0-9A-Z]{2}[0-9]{9}|(GB)?([0-9]{9}([0-9]{3})?|[A-Z]{2}[0-9]{3})|(HU)?[0-9]{8}|(IE)?[0-9]S[0-9]{5}L|(IT)?[0-9]{11}|(LT)?([0-9]{9}|[0-9]{12})|(LU)?[0-9]{8}|(LV)?[0-9]{11}|(MT)?[0-9]{8}|(NL)?[0-9]{9}B[0-9]{2}|(PL)?[0-9]{10}|(PT)?[0-9]{9}|(RO)?[0-9]{2,10}|(SE)?[0-9]{12}|(SI)?[0-9]{8}|(SK)?[0-9]{10})$

我还要在占位符/标题中澄清它们需要:输入增值税号:CC0123456789,其中包括CC(国家/地区代码)。

然而,客户似乎仍然不理解这一点,并且仍然在没有国家/地区代码的情况下填写增值税号,如果输入了国家/地区代码,则该模式似乎无法检查。

因此,例如,我希望人们总是相应地输入国家代码和他们的增值税号码。现在你可以输入BE0123456789或0123456789,但后者是我特别不想要的。

有没有办法让上述模式强制使用国家代码?

提前感谢您提供更多信息。

编辑:针对所有欧洲国家和一些非欧洲国家/地区进一步开发解决方案和优化代码!

^(SM[0-9]{5}|(IS|CH)[0-9]{6}|(ATU|DK|FI|LU|MT|SI|HU)[0-9]{8}|(BE0|DE|EE|EL|GR|PT|УНП|IL|RS|UZ)[0-9]{9}|(PL|SK|TR|UA)[0-9]{10}|(AU|IT|LV|HR)[0-9]{11}|(SE|PH)[0-9]{12}|(CA|ID)[0-9]{15}|BG[0-9]{9,10}|CY[0-9]{8}L|CZ[0-9]{8,10}|ES[0-9A-Z][0-9]{7}[0-9A-Z]|FR[0-9A-Z]{2}[0-9]{9}|GB([0-9]{9}([0-9]{3})?|[A-Z]{2}[0-9]{3})|IE[0-9]S[0-9]{5}L|LT([0-9]{9,12}|[0-9]{12})|NL[0-9]{9}B[0-9]{2}|RO[0-9]{2,10}|(ALK|ALJ)[0-9]{8}L|IN[0-9]{11}(V|C)|NO[0-9]{9}MVA|RU[0-9]{10,12}|CHE[0-9]{9}(TVA|MWST|IVA))$

1 个答案:

答案 0 :(得分:1)

是的,您只需要将国家/地区代码部分强制性

在您的模式中,第一个(以及国家/地区代码的所有其他实例)(AT)?位于可选组中。 (...)是一个捕获组," group"一系列的字符。在这里,AT?量词表示AT char序列可以出现1次或0次。删除()?AT只需要一次。

(EL|GR)?中,您只需删除?量词,因为您仍然需要一个组来匹配其中任何一个,ELGR

使用

^(ATU[0-9]{8}|BE0[0-9]{9}|BG[0-9]{9,10}|CY[0-9]{8}L|CZ[0-9]{8,10}|DE[0-9]{9}|DK[0-9]{8}|EE[0-9]{9}|(EL|GR)[0-9]{9}|ES[0-9A-Z][0-9]{7}[0-9A-Z]|FI[0-9]{8}|FR[0-9A-Z]{2}[0-9]{9}|GB([0-9]{9}([0-9]{3})?|[A-Z]{2}[0-9]{3})|HU[0-9]{8}|IE[0-9]S[0-9]{5}L|IT[0-9]{11}|LT([0-9]{9}|[0-9]{12})|LU[0-9]{8}|LV[0-9]{11}|MT[0-9]{8}|NL[0-9]{9}B[0-9]{2}|PL[0-9]{10}|PT[0-9]{9}|RO[0-9]{2,10}|SE[0-9]{12}|SI[0-9]{8}|SK[0-9]{10})$

请参阅regex demo