2013-03-13 130 views
0

我有一个PHP代码来检查字符串内收集的字符串,我的代码是这样的:使用正则表达式来检查特定的字符串

$string = '01122028K,02122028K,03122028M-1'; 
$search = '03122029M' 
echo preg_match('/\b' . $search . '\b/', $string); 

它返回TRUE ...

我该怎么办与我的正则表达式返回它假,我希望它只返回TRUE当变量$ search中的字符串实际上匹配变量$字符串, 因此$ search =“03122029M”将返回FALSE $ search =“03122029M-1”会返回TRUE

谢谢你

+0

这里看看http://stackoverflow.com/questions/5752829/regular-expression-for-exact-match-of-a-word – BenB 2013-03-13 17:20:30

回答

0

问题是你正在使用的边界标尺:\b包括-

您可以使用字符类来分隔空格和逗号。还包括行的开始,并在检测线在行尾搭上情况:

preg_match('/(^|[\s,])' . $search . '([\s,]|$)/', $string); 
0

我不认为你真的需要这里正则表达式。此外,你也会开放自己的一个逃避噩梦。

如果添加逗号的开始和$string结束时,你可以通过逗号包裹它,以及匹配整个$search作为一个单一的实体:

echo (strpos(',' . $string . ',', ',' . $search . ',') !== FALSE) 
0

\ 1b包括 - 在你”重新匹配。取而代之的是使用逗号来匹配 - 你可以通过在字符串的开始和结尾加一个逗号来实现。

$string = '01122028K,02122028K,03122028M-1'; 
$string = ','.$string.',' 
$search = '03122029M' 
echo preg_match('/,' . $search . ',/', $string); 
1

请勿使用正则表达式。

echo in_array($search, explode(',', $string)); 
+0

谢谢Barmar,我认为这是良好和快速的解决方案我的问题。它的工作.. :-) – 2013-03-14 00:25:38

相关问题