请问我想使用正则表达式来preg_match这种字符串:
$liste = 'bla0bla-__my_separator_-01blabla';
我试过了:
if(preg_match('/^[a-zA-Z0-9]_my_separator_[a-zA-Z0-9]$/', $liste))
echo 'ok';
else echo 'not ok';
但这总是不正常。
请掌握任何建议?
PS:我认为问题是 _ 和 - ,我试过的不支持!
提前致谢。
答案 0 :(得分:3)
将正则表达式模式更改为:
'/^[a-zA-Z0-9_\-]+?_my_separator_[a-zA-Z0-9_\-]+?$/'
答案 1 :(得分:3)
如果您只想确定字符串中是否存在静态子字符串,则应使用strpos()
:
if (strpos('_my_separator_', $liste) !== false) {
echo 'ok';
}
答案 2 :(得分:2)
您的白名单中缺少转发器+
和-
以及_
:
/^[a-zA-Z0-9\-_]+_my_separator_[a-zA-Z0-9\-_]+$/
你的orignal正则表达式会匹配以下内容:
A_my_seperator_B
0_my_seperator_C
但不是:
AB_my_seperator_C