使用php,如何用[0-9] [0-9]替换[0-9],[0-9]?

时间:2014-07-26 14:10:35

标签: php regex

假设我有一个字符串“1,000,786”。我希望将其转换为“1000786”。我理解preg_replace的第一部分类似于“[0-9],[0-9]”,但我不明白如何在preg_replace的'replace with'部分中获取数值。感谢。

编辑:对不起,我忘了提及它并不像删除逗号那么简单,因为可能包含字母字符。只有当逗号介于两个数字之间时,我才希望它消失。

示例:“Apple,Banana 1,746”将是“Apple,Banana 1746”。

4 个答案:

答案 0 :(得分:6)

以下正则表达式只会删除逗号,如果前面有一个数字,则必须后跟一个数字。

(?<=\d),(?=\d)

替换字符串:

Empty string

DEMO

您的代码将是,

<?php
$string = '1,000,786';
$pattern = "~(?<=\d),(?=\d)~";
$replacement = "";
echo preg_replace($pattern, $replacement, $string);
?> //=> 1000786

OR

<?php
$string = 'Apple, Banana 1,746';
$pattern = "~(?<=\d),(?=\d)~";
$replacement = "";
echo preg_replace($pattern, $replacement, $string);
?> //=> Apple, Banana 1746

答案 1 :(得分:2)

您不必使用正则表达式,调用str_replace()就足够了:

$s = str_replace(",", "", "1,000,786");

答案 2 :(得分:1)

为了处理之前的文本,请考虑以下代码:

$text = 'Apple, Banana, 1,746';
preg_match('/[0-9]+,[0-9]+/', $text, $matches);
$text = str_replace($matches[0], str_replace(',', '', $matches[0]), $text);

答案 3 :(得分:0)

搜索:

/(\d+),(\d+)(?:,(\d+))?/

并将其替换为:

$1$2$3

Online Regex Demo