我想从字符串中拆分数字和字母但有问题。
输入如:
输入示例 1:A5
输入示例 2:C16
输入示例 3:A725
输入示例 4:X05
结果必须是:
结果示例 1:'A','5'
结果示例 2:'C','16'
结果示例 3:'A','725'
结果示例 4:'X','05'
我尝试使用 belo 正则表达式,但没有给出好的结果:
preg_split('/(?=\d+)/', $input)
您还需要添加一个否定的look-behind,以确保选择的空字符串不在两位数的中间。
目前对于 string A725
,您的正则表达式将在7
,2
和之前的空字符串上拆分5
,因为它们都后跟至少一位数字。
您可以使用此正则表达式:
preg_split('/(?<!\d)(?=\d+)/', $input)
您可以使用:
$s = 'A5,C16,A725,X05';
if (preg_match_all("~(?>[a-z]+|\d+)~i", $s, $arr))
var_dump($arr[0]);
给出:
array(8) {
[0]=>
string(1) "A"
[1]=>
string(1) "5"
[2]=>
string(1) "C"
[3]=>
string(2) "16"
[4]=>
string(1) "A"
[5]=>
string(3) "725"
[6]=>
string(1) "X"
[7]=>
string(2) "05"
}