我有一个字符串,价格值($ 544.50)可以在字符串中的任何位置。 例如:HP G60-630US笔记本电脑:笔记本电脑| RadioShack.com - > $ 259.97(radioshack.com)
我需要从字符串中获取值:259.97
为此我尝试使用一些随机正则表达式。 但没有运气!
有人可以帮助我,给出一个正确的正则表达式字符串,用于从字符串中检索此价格值。
提前致谢。
答案 0 :(得分:11)
答案 1 :(得分:1)
[$]?[0-9]*(\.)?[0-9]?[0-9]?
这应该与$
符号和没有符号的符号相匹配。
答案 2 :(得分:0)
这样的事可能会奏效:
/\$(\d*\.?\d+?)/
答案 3 :(得分:0)
\ $(\ d * \。?\ d *)应该有效,不是最佳但可能有用。
(重要:逃避$和。,这是特殊字符)
答案 4 :(得分:0)
这个在字符串中找到第一个十进制数字:
^[^\d]*(\d+|\d+((,|\.)\d{1,2}))(\s|[a-zA-Z)]|€|$).*
答案 5 :(得分:0)
这是一种替换和提取的方法
摘录:强>
preg_match('/\$([0-9]+[\.]*[0-9]*)/',$string,$matches);
foreach($matches as $match) {
echo $match."<br>";
}
//echo $matches[0]; for just the first match
<强>修改/替换:强>
$string = preg_replace_callback('/\$([0-9]+[\.]*[0-9]*)/', function ($matches) {
foreach ($matches as $match) {
// only if value is !empty and higher than 0
$tmp = str_replace("$", "", $match);
if ($tmp > 0 && $tmp != "") {
//do something to $tmp in this case round to two decimal places
return "$" . round($tmp,2);
}
}
}, $string);
在替换示例中,可能有更好的方法来处理符号。
答案 6 :(得分:0)
正则表达式过滤掉数字: 字符串正则表达式=([0-9] + [,。]?)+ 您可以像这样使用它:
CurrencySymbol +正则表达式 正则表达式+ CurrencySymbol