我正在尝试使用以下正则表达式将字符串'A123456789123B分成六组:
'/^([A-Z]{1})([0-9]{3})([0-9]{3})([0-9]{3})([0-9]{3})([A-Z]{1})$/'
Run Code Online (Sandbox Code Playgroud)
我试过用:
preg_split('/^([A-Z]{1})([0-9]{3})([0-9]{3})([0-9]{3})([0-9]{3})([A-Z]{1})$/', 'A123456789123B');
Run Code Online (Sandbox Code Playgroud)
但是,它不起作用.
我需要将字符串拆分成这样的东西:
['A', '123', '456', '789', '123', 'B']
Run Code Online (Sandbox Code Playgroud)
它更适合preg_match()用于此:
preg_match('/^([A-Z]{1})(\d{3})(\d{3})(\d{3})(\d{3})([A-Z]{1})$/', 'A123456789123B', $matches);
array_shift($matches);
Run Code Online (Sandbox Code Playgroud)
您的匹配数组将存储在$matches.第一个元素$matches将包含匹配的整个字符串,其余元素将是括号中的特定捕获组.我们array_shift()用来删除第一个元素.
这是一个例子:
php > var_dump(preg_match('/^([A-Z]{1})(\d{3})(\d{3})(\d{3})(\d{3})([A-Z]{1})$/', 'A123456789123B', $matches));
int(1)
php > var_dump($matches);
array(7) {
[0]=>
string(14) "A123456789123B"
[1]=>
string(1) "A"
[2]=>
string(3) "123"
[3]=>
string(3) "456"
[4]=>
string(3) "789"
[5]=>
string(3) "123"
[6]=>
string(1) "B"
}
php > array_shift($matches);
php > var_dump($matches);
array(6) {
[0]=>
string(1) "A"
[1]=>
string(3) "123"
[2]=>
string(3) "456"
[3]=>
string(3) "789"
[4]=>
string(3) "123"
[5]=>
string(1) "B"
}
php >
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
428 次 |
| 最近记录: |