我似乎遇到了 preg_match 代码的问题,我试图从一个应该类似于 '3.25' 的字符串中获取十进制数,但我得到的是 '1'
preg_match('/[0-9]+(?:\.[0-9]*)?/', '£3.25', $matches);
echo 'match: '.$matches[0];
打印“1”
我似乎遇到了 preg_match 代码的问题,我试图从一个应该类似于 '3.25' 的字符串中获取十进制数,但我得到的是 '1'
preg_match('/[0-9]+(?:\.[0-9]*)?/', '£3.25', $matches);
echo 'match: '.$matches[0];
打印“1”
preg_match('#\d+(?:\.\d{1,2})?#', '£2.35', $match);
var_dump($match);
给
array(1) {
[0]=>
string(4) "2.35"
}
即使在 PHP 5.2 上:http ://codepad.viper-7.com/9nFhET
首先,您将在数组 ( $matches[1]
)的索引 1 处找到值
尝试这样的事情:
<?php
preg_match('/[0-9]+\.([0-9]+)/', '£3.25', $matches);
print_r($matches);
?>
这给出了:
Array
(
[0] => £3.25
[1] => 25
)
我可以在此测试仪站点上重现小数问题:http:
//www.pagecolumn.com/tool/pregtest.htm
如果将转义点替换为包含点的字符类,则它可以工作:
[0-9]+(?:[.][0-9]*)?
顺便说一句:你有没有可能得到点但后面没有数字?
如果不是,我会用预期的[0-9]*
任何一个[0-9]+
或特定数量的数字替换[0-9]{2}