2015-11-03 154 views
1

我需要看看输入是否包含蒸汽ID。我试图看看我的preg_match是否有效。PHP的正则表达式不匹配

$regex = "/^STEAM_0:[01]:[0-9]{7,8}$/"; 
if(preg_match($regex, 'STEAM_0:1:38401525')) 
{ 
echo 'OK'; } else {echo 'ERROR';} 

我试图在网上工具 https://regex101.com/r/nI0kQ7/1

有什么不对?为什么它总是给我一个“错误”?

+2

[It works](http://ideone.com/uPoQjy),但取决于PHP版本,您可能需要添加'$ matches'。尝试使用'if(preg_match($ regex,'STEAM_0:1:38401525',$ matches))''。请参阅http://ideone.com/k492KV –

+0

'$ regex =“/^STEAM_0:[01]:[0-9] {7,8} $ /”; preg_match($ regex,'STEAM_1:1:38399475',$ matches);如果($匹配) {echo'OK'; } else {echo'ERROR';}' 它仍然是错误 – pusty

+0

尝试使用它,因为在我的第二个演示。或者检查你在这里和你的系统上是否有相同的值。 –

回答

0

您的代码是好的我正在测试PHP版本5.2 here并给我行,检查你的php编译器或maiby你的代码。

我不能从那里救我的代码,但添加你的问题的代码验证:

$regex = "/^STEAM_0:[01]:[0-9]{7,8}$/"; 
if(preg_match($regex, 'STEAM_0:1:38401525')) 
{ 
echo 'OK'; } else {echo 'ERROR';} 
+0

链接是空的测试器。请将您的代码发布在您的答案中,如果您想包含链接,请确保它是有效的。 – lintmouse

+0

从你的问题'$ regex =“/^STEAM_0:[01]:[0-9] {7,8} $ /”; if(preg_match($ regex,'STEAM_0:1:38401525')) } else {echo'ERROR';}'=>'确定' – Laurentiu

1

我测试你的代码,它的正常工作,这里是代码片段

$regex = "/^STEAM_0:[01]:[0-9]{7,8}$/"; 
if(preg_match($regex, 'STEAM_0:1:38401525', $match)) 
{ 
    echo 'OK'.PHP_EOL; 
    print_r($match); 
} else { 
    echo 'ERROR'; 
} 

并且这产生的输出像

OK 
Array 
(
    [0] => STEAM_0:1:38401525 
) 

退房此Demo其中代码是在动作

hereregexr在你的行动。