PHP中用于数值和一个小数位的正则表达式


Regular expression for numeric values and a single decimal place in PHP

尝试使用以下正则表达式仅解析数值和一个小数点,但同时也解析字符。有什么想法吗?

<?php 
function get_rate1(SimpleXMLElement $xml) {
    $exchange['rate'] = $xml->channel->item[15]->description;
    $rate = preg_replace("/^([0-9]*|'d*'.'d{1}?'d*)$/", '', $exchange['rate']);
    echo $rate . '<br />'; 
    return $rate;
}
?>

预期结果:

11.20409 

实际结果:

1 British Pound Sterling = 1.20409 Euro

期望结果:

1.20409

此外,任何关于如何删除英镑之前显示的数字1的第一个数值的想法都会使该值不正确。

提前感谢

if (preg_match("([0-9]+'.[0-9]{1}", $string, $matches)) {
    echo $matches[1];
} else {
    throw new Exception("GIVE ME NUMBERS, lol");
}

"This is a text 1.234 with a number"上应给出"1.2"

.123 等数字不匹配

实际上,正则表达式应该是:

'/'d*'.'d/'

这将匹配小数点之前的任何数字(0或更多),并且正好超过小数点一位。FritsvanCampen的正则表达式还有一些其他问题,尤其是未闭合的paren。