我已经尝试了几天将字符串分成字母和数字。我找到了各种解决方案,但它们达不到我的预期(其中一些只是将数字与数字分开(不是整数或浮点数/每个说负数)。
以下是一个例子:
$input = '-4D-3A'; // edit: the TEXT part can have multiple chars, i.e. -4AB-3A-5SD
$result = preg_split('/(?<=\d)(?=[a-z])|(?<=[a-z])(?=\d)/i', $input);
print_r($result);
结果:
Array ( [0] => -4 [1] => D-3 [2] => A )
我需要它 [0] =&gt; -4 [1] =&gt; D [2] =&gt; -3 [3] =&gt; A
我尝试过多次修改但到目前为止没有结果,如果可能的话,请你帮帮我?
谢谢。
答案 0 :(得分:2)
试试这个:
$input = '-4D-3A';
$result = preg_split('/(-?[0-9]+\.?[0-9]*)/i', $input, 0, PREG_SPLIT_DELIM_CAPTURE);
$result=array_filter($result);
print_r($result);
它将按数字分割但也可以捕获分隔符(数字)
给出:数组([1] =&gt; -4 [4] =&gt; D [5] =&gt; -3 [8] =&gt; A)
我把数字改为:
1.有可选的负号(你可能也想做+)
2.后跟一个或多个数字
3.后跟一个可选的小数点
4.后跟零个或多个数字
任何人都可以指出“-0”的解决方案。是有效号码吗?
答案 1 :(得分:1)
这个正则表达式怎么样? ([-]{,1}\d+|[a-zA-Z]+)
我在http://www.rubular.com/上测试了它似乎可以按你的意愿工作。