我有一个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
谢谢
答案 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);