将任何 VAT number
分割成段的最佳时间是多少?
第一部分是国家代码,总是 2 个字母数字。
第二个是剩余数量。
例如:
NL820471616B01
应拆分为 NL
和 820471616B01
BE0824148721
应该拆分为 BE
和 0824148721
ATU12345678
应该拆分为 AT
和 U12345678
我已经试过了,但这只适用于有 2 个字母数字的情况。
$vat_clean = preg_replace('/[^a-zA-Z0-9]/', '', $_GET['vat']);
$vat_country = substr($vat_clean,2,25);
$vat_code = substr($vat_clean,2);
答案 0 :(得分:2)
您可以使用 2 个捕获组
\b([A-Z]{2})([A-Z0-9]+)\b
\b
一个词边界([A-Z]{2})
捕获组 1,匹配 2 个大写字符 A-Z([A-Z0-9]+)
捕获组 2,匹配 1+ 个字符 A-Z0-9\b
一个词边界$re = '/\b([A-Z]{2})([A-Z0-9]+)\b/';
$str = 'NL820471616B01';
preg_match($re, $str, $matches);
echo $matches[1]; // NL
echo $matches[2]; // 820471616B01
答案 1 :(得分:0)
preg_match("/([a-zA-Z]+)(\\d+)/", "u1236777", $matches);
print("Sring: " . $matches[1] . "\n");//u
print("Int: " . $matches[2] . "\n");//1236777
//*******//
preg_match("/([a-zA-Z]+)(\\d+)/", "NL820471616B01", $matches);
print("Sring: " . $matches[1] . "\n");//NL
print("Int: " . $matches[2] . "\n");//820471616B01
我们可以运行一个正则表达式来分割字符串和数字
答案 2 :(得分:0)
因为任何增值税号都以 2 个字母数字开头,所以我可以调整现有代码以使其完全正常工作。
$vat_clean = preg_replace('/[^a-zA-Z0-9]/', '', $_GET['vat']);
$vat_country = substr($vat_clean,2,15);
$vat_code = substr($vat_clean,0,2);