将多个正则表达式合并为一个用于删除逗号

时间:2017-01-16 15:00:05

标签: php regex

$reg1 = preg_replace('/(?<!\d),(?=\s+\d)/', '', $text); $reg2 = preg_replace('/,\s*$/', '', $reg1); $reg3 = preg_replace('/\s\s+/', ' ', $reg2);

我有三个正则表达式替换调用。我能把它们合二为一吗? 第一个删除字符串之后和数字之前的逗号。 第二个删除末尾的逗号。 第三个修剪空白。

3 个答案:

答案 0 :(得分:2)

前两个可以合并为:

$reg1 = preg_replace('/(?<!\d),\s*(?=\d|$)/', '', $text);

答案 1 :(得分:1)

由于替换值不同,您只能将前2个正则表达式与“或”条件分组。 preg_replace也允许多次替换,因此您可以将第3个正则表达式作为单独的参数传递。

$result = preg_replace(array('/((?<!\d),(?=\s+\d))|(,\s*$)/', '(\s\s+)'), array('', ' '), $text);

答案 2 :(得分:0)

您可以将所有三个传递给preg_replace

$patterns = array('/(?<!\d),(?=\s+\d)/', '/,\s*$/', '/\s\s+/');
$replacements = array('', '', ' ');

$result = preg_replace($patterns, $replacements, $text);