根据国家/地区代码将增值税拆分为多个部分

时间:2021-01-05 08:59:52

标签: php regex

将任何 VAT number 分割成段的最佳时间是多少? 第一部分是国家代码,总是 2 个字母数字。 第二个是剩余数量。

例如: NL820471616B01 应拆分为 NL820471616B01

BE0824148721 应该拆分为 BE0824148721

ATU12345678 应该拆分为 ATU12345678

我已经试过了,但这只适用于有 2 个字母数字的情况。

$vat_clean = preg_replace('/[^a-zA-Z0-9]/', '', $_GET['vat']);
$vat_country = substr($vat_clean,2,25);
$vat_code = substr($vat_clean,2);

3 个答案:

答案 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 一个词边界

Regex demo

$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);
相关问题