2

我试图用来preg_match()匹配任何数量的数字的第一次出现,直到第一个空格。

$var = '2275073540 blah blah blah';
preg_match('/[0-9 ]/', $var, $matches);

我希望 $matches[0] 返回2275073540

4

3 回答 3

5
preg_match('/(\d+)/', $var, $matches);
             | ^-|-------------- one or more digits
             ^   ^-------------- capturing group
于 2012-12-16T13:42:26.807 回答
3

其实不需要 PCRE 正则表达式,一个简单的格式扫描就足够了:

sscanf($var, '%f', $number); # $number is 2275073540 now

演示

于 2012-12-16T13:45:46.210 回答
2

这匹配直到(但不包括)第一个空格的任何内容:

preg_match('/^[^ ]+/', $var, $matches);

尽管它不将输入限制为数字。为了那个原因。你会使用:

preg_match('/^[[:digit:]]+/', $var, $matches);

或者按照 Cthulhu 的建议,使用这个角色类的简写。

于 2012-12-16T14:27:25.113 回答