Php 如何使用正则表达式检测第二次出现?(菲律宾)
从这个问题 现在我想从用户提交的数据中搜索3D D关键字。只要3D和D出现在句子中,该规则就是有效的(不区分大小写) 例如: 3DZZZZZZZZZZZZ(无效,因为没有第二次出现D)Php 如何使用正则表达式检测第二次出现?(菲律宾),php,regex,Php,Regex,从这个问题 现在我想从用户提交的数据中搜索3D D关键字。只要3D和D出现在句子中,该规则就是有效的(不区分大小写) 例如: 3DZZZZZZZZZZZZ(无效,因为没有第二次出现D) ZZZZD(由于没有3D,因此无效) xxx3DzzzzzD(有效,因为字符串中有3D和D) 我现在正在使用这个正则表达式,但不知为什么它有一个问题 $subject = 'BLASHSH*3D*8qw9e08e2323*D*'; if(preg_match('/(?=.*3D)(?=.*D).*/i', $s
ZZZZD(由于没有3D,因此无效)
xxx3DzzzzzD(有效,因为字符串中有3D和D) 我现在正在使用这个正则表达式,但不知为什么它有一个问题
$subject = 'BLASHSH*3D*8qw9e08e2323*D*';
if(preg_match('/(?=.*3D)(?=.*D).*/i', $subject))
{
echo 'pattern match';
}
else
{
echo 'fail';
}
问题是这个字符串也将返回true
3D(由于没有第二次出现D,因此应该无效)3D ABC(应该无效,因为没有第二次出现D)
如何解决这个问题 如果规则是3D必须出现在D之前,并且在D之前、之后或之间可以有任意数量的字符(包括零个字符),这就足够了:
/3D.*D/i
如果规则是3D必须出现在D之前,并且在D之前、之后或之间可以有任意数量的字符(包括零个字符),那么这就足够了:
/3D.*D/i
假设
3DD
,D3D
和CCCDZZ3D
均有效:
/(3D.*D)|(D.*3D)/i
既然您在我假设您要接受
3d
和d
之前使用了i
修饰符?如果不只是从正则表达式的末尾删除i
。假设3DD
,D3D
和cccDzzz3D
都是有效的:
/(3D.*D)|(D.*3D)/i
既然您在我假设您要接受
3d
和d
之前使用了i
修饰符?如果不只是从正则表达式的末尾删除i
。听起来3D必须在第二个D之前。如果我理解正确。是的,它不区分大小写。D也可以在3D之前变成。谢谢。听起来3D必须在第二个D之前。如果我理解正确的话。是的,它不区分大小写。D也可以在3D之前变成。谢谢