我有一个字符串,例如“lorem 110 ipusm”,我想获得110 我已经尝试过了:
preg_match_all("/[0-9]/", $string, $ret);
但是这回来了:
Array
(
[0] => 1
[1] => 1
[2] => 0
)
我想要这样的东西
Array
(
[0] => 110
)
答案 0 :(得分:3)
使用+
(1个或多个匹配)运算符:
preg_match_all("/[0-9]+/", $string, $ret);
另外,你是否想要支持标志?小数点?科学计数法?正则表达式也支持字符类的简写; [0-9]
是一个数字,因此您只需使用\d
。
答案 1 :(得分:3)
你需要多个数字:
preg_match_all("/[0-9]+/", $string, $ret);
答案 2 :(得分:3)
使用/\d+/
- 应该解决它。
答案 3 :(得分:3)
要捕获任何浮点数,请使用:
preg_match_all("/[+-]?\d+[\d\.Ee+]*/", $string, $matches);
例如:
<?
$string = 'ill -1.1E+10 ipsum +1,200.00 asdf 3.14159, asdf';
preg_match_all("/[+-]?\d+[\d\.Ee+]*/", $string, $matches);
var_dump($matches);
?>
运行时给出:
array(1) {
[0]=>
array(4) {
[0]=>
string(8) "-1.1E+10"
[1]=>
string(2) "+1"
[2]=>
string(6) "200.00"
[3]=>
string(7) "3.14159"
}
}