php - 在前导数字和尾随字母之间拆分字母数字字符串

标签 php regex split text-parsing alphanumeric

我有一个像这样的字符串:

$Order_num = "0982asdlkj";

我如何将其拆分为 2 个变量,将数字作为一个元素,然后将另一个变量作为字母元素?

数字元素可以是 1 到 4 之间的任意长度,字母元素填充其余部分,使每个 order_num 总共 10 个字符长。

我找到了 php explode 函数...但不知道如何在我的情况下实现它,因为数字的数量在 1 到 4 之间,之后的字母是随机的,所以无法在特定字母处拆分。

最佳答案

您可以使用 preg_split 使用 lookahead and lookbehind :

print_r(preg_split('#(?<=\d)(?=[a-z])#i', "0982asdlkj"));

打印

Array
(
    [0] => 0982
    [1] => asdlkj
)

这只有在字母部分真的只包含字母而没有数字的情况下才有效。

更新:

只是为了澄清这里发生了什么:

正则表达式查看每个位置,如果数字在该位置之前 ((?<=\d))并且它之后有一个字母((?=[a-z])),那么它匹配并且字符串在这个位置。整个事情不区分大小写 ( i )。

关于php - 在前导数字和尾随字母之间拆分字母数字字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4537994/

相关文章:

php - Not a valid entity or mapped super class 错误来自 Doctrine

php - Mysqli LIKE 无法使用撇号?

java - 拆分不带分隔符的字母数字字符串

python - 根据 bool 拆分 numpy 数组

r - R:用逗号将变量列拆分为多个(不平衡)列

php - 使用 php MySql 动态创建选择列表,但选择选项不起作用

php - 将对象转换为关联数组返回空值

python - 在文本中查找美国街道地址(最好使用 Python 正则表达式)

mysql - 从正则表达式收到错误 'repetition-operator operand invalid'(错误#1139)

sql - 解析子查询中的拆分字符串