0

这几天我一直在尝试将字符串拆分为字母和数字。我找到了各种解决方案,但它们没有达到我的预期(其中一些仅将字母与数字分开(不是整数或浮点数/每个说负数)。

这是一个例子:

$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] => -4 [1] => D [2] => -3 [3] => A

我已经尝试进行了几次更改,但到目前为止没有结果,如果可能的话,你能帮我吗?

谢谢你。

4

2 回答 2

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] => -4 [4] => D [5] => -3 [8] => A)

我将数字图案化为:
1. 有可选的负号(你可能也想做 +)
2. 后跟一个或多个数字
3. 后跟一个可选的小数点
4. 后跟零个或多个数字

谁能指出“-0”的解决方案。是有效号码?

于 2013-10-29T11:35:47.127 回答
1

这个正则表达式怎么样?([-]{,1}\d+|[a-zA-Z]+) 我在http://www.rubular.com/上对其进行了测试,似乎可以按您的意愿工作。

于 2013-10-29T11:22:48.833 回答