PHP正则表达式(+和*之间的结果不同)

Jor*_*eFG 5 php regex

如果我把*放在我的正则表达式中,它就不起作用,如果我放+,它就可以了.

*应该是0或更多,+应该是1或更多.


案例*

$num = '    527545855   ';
var_dump( preg_match( '/\d*/', substr( $num, 0, 18 ), $coincidencias ) );
var_dump($coincidencias);exit;
Run Code Online (Sandbox Code Playgroud)

结果:

int(1)
array(1) {
  [0]=>
  string(0) ""
}
Run Code Online (Sandbox Code Playgroud)

案例+

$num = '    527545855   ';
var_dump( preg_match( '/\d+/', substr( $num, 0, 18 ), $coincidencias ) );
var_dump($coincidencias);exit;
Run Code Online (Sandbox Code Playgroud)

结果:

int(1)
array(1) {
  [0]=>
  string(9) "527545855"
}
Run Code Online (Sandbox Code Playgroud)

我认为两者都应该有效,但我不明白为什么*不起作用.

Cas*_*yte 7

* 表示0或更多次出现,因此第一次出现是测试字符串中的空字符串


Ani*_*dha 3

它会匹配数字或什么都不匹配

\d*表示匹配 0到多个数字


例如在

hello 123

正则表达式\d*

将匹配8 次,即 start( ^) 处匹配 1 次,for 匹配 6 次,hellofor 匹配 1 次123