php正则表达式 取反,正则表达式字符串取反 怎么弄?

$s1= 'mm.a.cn';$s2= 'mm.add.cn';$s3= 'mm.c.cn';$p='/mm\.(.+)(?

int(0) int(0) int(1)

试试 mm.aadd.cn ?

$s =<<< TXTmm.a.cn mm.x.cn mm.aadd.cnmm.c.cnTXT;preg_match_all('/mm\.(?!a|b|add).*?\.cn/s', $s, $r);print_r($r);preg_match_all('/mm\.(?!a\.|b\.|add\.).*?\.cn/s', $s, $r);print_r($r);Array

(

[0] => Array

(

[0] => mm.x.cn

[1] => mm.c.cn

)

)

Array

(

[0] => Array

(

[0] => mm.x.cn

[1] => mm.aadd.cn

[2] => mm.c.cn

)

)

preg_match_all('/mm\.(?!a\.|b\.|add\.).*?\.cn/s', $s, $r);

可写作

preg_match_all('/mm\.(?!(?:a|b|add)\.).*?\.cn/s', $s, $r);

preg_match_all('/mm\.(?!a\.|b\.|add\.).*?\.cn/s', $s, $r);

可写作

preg_match_all('/mm\.(?!(?:a|b|add)\.).*?\.cn/s', $s, $r);

把后一个字符也加进去,整体作为排除对象啊?受教了

四楼应该可以啊,先结贴了。

无意中看到这个贴的。。

首先。。我不懂PHP,作为正则的角度来说,这个不是很简单么。。

反义排除掉这几个字符就行了:

^mm\.[^ab(?:add)]+\.cn$

[^ab(?:add)] --> 排除a b add

preg_match_all('/mm\.(?!a\.|b\.|add\.).*?\.cn/s', $s, $r);

可写作

preg_match_all('/mm\.(?!(?:a|b|add)\.).*?\.cn/s', $s, $r);

版主这个写法是不是有点多余~

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值