使用Regex检查特定字符串

时间:2013-03-13 17:16:41

标签: php regex

我有一个PHP代码来检查字符串集合中的字符串,我的代码是这样的:

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

返回TRUE ...

如何使用我的正则表达式将其返回FALSE,我希望它只在变量$ search中的字符串实际上与变量$ string匹配时才返回TRUE, 所以$ search =“03122029M”将返回FALSE    $ search =“03122029M-1”将返回TRUE

谢谢

4 个答案:

答案 0 :(得分:1)

不要使用正则表达式。

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

答案 1 :(得分:0)

问题在于您使用的边界指示符:\b包含-

您可以使用字符类来分隔空格和commans。还包括行的开头和测试中的行以捕获行尾的案例:

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

答案 2 :(得分:0)

我认为你真的不需要正则表达式。而且,你也要开放自己来逃避噩梦。

如果您在$string的开头和结尾添加逗号,则可以将整个$search作为单个实体进行匹配,也可以将其包装在逗号中:

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

答案 3 :(得分:0)

\ b包括 - 在您匹配的内容中。特别是匹配逗号 - 您可以通过在字符串的开头和结尾添加逗号来实现此目的。

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