0

请我有我想使用正则表达式来 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:我认为问题在于我尝试过的_-不支持!

提前致谢。

4

3 回答 3

3

将您的正则表达式模式更改为:

'/^[a-zA-Z0-9_\-]+?_my_separator_[a-zA-Z0-9_\-]+?$/'
于 2013-01-08T17:41:32.580 回答
3

如果您只是想确定字符串中是否存在静态子字符串,您应该使用strpos()

if (strpos('_my_separator_', $liste) !== false) {
  echo 'ok';
}
于 2013-01-08T17:42:43.137 回答
2

您在白名单中缺少中继器+-_

/^[a-zA-Z0-9\-_]+_my_separator_[a-zA-Z0-9\-_]+$/

您的原始正则表达式将匹配以下内容:

A_my_seperator_B
0_my_seperator_C

但不是:

AB_my_seperator_C
于 2013-01-08T17:39:25.830 回答