PHP preg_split正则修改:匹配非指定字符时拆分字符串
正则修改方案
你只需要把拆分用的正则改成否定字符组格式即可,不需要保留全字符串匹配的断言和边界符,修改后的代码如下:
$splitOriginal = preg_split("/[^- +()0-9\r\n\t]/", implode('', array_slice($array, $key)), 2);
规则说明
[^...]是正则语法中的否定字符组,会匹配所有未出现在方括号内的单个字符- 我们将你定义的所有允许字符(数字、括号、加号、减号、换行符、制表符、空格)全部放入字符组内,即可实现「遇到非允许字符就拆分」的需求
- 这里特意把
-放在字符组的最开头,避免被正则解析为字符范围连接符,不会出现语法错误
注意:原来
preg_match里的(?=.*[0-9])断言是用来校验整个字符串至少包含1个数字的,拆分场景不需要这个逻辑所以直接移除即可。如果你有特殊要求需要保证拆分后的前半段至少包含1个数字,可以再额外加逻辑判断。
内容的提问来源于stack exchange,提问作者user627341
相关产品推荐
相关产品推荐

