我正在尝试通过带有正则表达式的 preg_replace 从字符串中删除价格,但无法正常工作。我想从给定的字符串中删除202,00
<?php
$haystack = "4 x 3XS - € 202,00, L, 2XS, 4 x XS - € 202,00, S";
echo preg_replace('/^(?:0|[1-9]\d*)(?:\,\d{2})?$/','',$haystack);
?>
预期结果:
4 x 3XS,L,2XS,4 x XS,S
任何帮助将不胜感激。
答案 0 :(得分:2)
您可以使用正则表达式:
(?<=€\s)(\d*,?\d+)
(?<=€\s)
向后寻找€
符号和空格。(\d*,?\d+)
捕获数字(可选,逗号)。您的代码变为:
<?php
$haystack = "4 x 3XS - € 202,00, L, 2XS, 4 x XS - € 202,00, S";
echo preg_replace('/(?<=€\s)(\d*,?\d+)/','',$haystack);
?>
输出:
4 x 3XS - € L, 2XS, 4 x XS - € S
您可以here试试。
答案 1 :(得分:2)
您可以使用
$haystack = "4 x 3XS - € 202,00, L, 2XS, 4 x XS - € 202,00, S";
echo preg_replace('/\s*(?:-\s*)?€\s*\d+(?:,\d+)?/u','',$haystack);
由于模式包含Unicode字符,因此将u
修饰符添加到正则表达式会更安全。模式匹配
\s*
-超过0个空格(?:-\s*)?
--
和0+空格的可选序列€
-欧元符号\s*
-超过0个空格\d+
-1个以上数字(?:,\d+)?
-,
和1个以上的数字的可选序列。