0

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

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

它返回真...

如何使用我的正则表达式返回 FALSE,我希望它仅在变量 $search 中的字符串实际上与变量 $string 匹配时返回 TRUE,因此 $search = "03122029M" 将返回 FALSE $search = "03122029M-1 " 将返回 TRUE

谢谢

4

4 回答 4

1

不要使用正则表达式。

echo in_array($search, explode(',', $string));
于 2013-03-13T17:24:53.203 回答
0

问题出在您使用的边界分离器上:\b包括-.

您可以使用字符类来分隔空格和逗号。还要在测试中包括行首和行尾以捕获行尾的案例:

preg_match('/(^|[\s,])' . $search . '([\s,]|$)/', $string);
于 2013-03-13T17:18:31.990 回答
0

我不认为你真的需要一个正则表达式。此外,你也会向逃避的噩梦敞开心扉。

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

echo (strpos(',' . $string . ',', ',' . $search . ',') !== FALSE)
于 2013-03-13T17:20:16.197 回答
0

\b 包括 - 在您匹配的内容中。而是专门从逗号匹配 - 您可以通过在字符串的开头和结尾添加逗号来做到这一点。

$string = '01122028K,02122028K,03122028M-1';
$string = ','.$string.','
$search = '03122029M'
echo preg_match('/,' . $search . ',/', $string);
于 2013-03-13T17:20:28.853 回答