原始文本:
www.aaa.com fsdfsdf www.bbb.com dasdad www.ccc.com sadasdasda www.ddd.com要求匹配 不包含www.bbb.com的 www.*com 两次以上,, 即匹配示例中的www.ccc.com sadasdasda www.ddd.com段....我的正则是: (?:www\.(?!bbb)\.com){2,}
失败了...貌似套小括号不管用...
www.aaa.com fsdfsdf www.bbb.com dasdad www.ccc.com sadasdasda www.ddd.com要求匹配 不包含www.bbb.com的 www.*com 两次以上,, 即匹配示例中的www.ccc.com sadasdasda www.ddd.com段....我的正则是: (?:www\.(?!bbb)\.com){2,}
失败了...貌似套小括号不管用...
至少匹配不包含www.bbb.com 的 www.*com应该这样来写:www\.(?!bbb)[^.]+\.com
(?:www\.bbb\.com.*?){2,}
可以匹配到
www.aaa.com fsdfsdf www.bbb.com df www.bbb.com dasdad www.ccc.com sadasdasda www.ddd.com
中的 "www.bbb.com df www.bbb.com"但是我想用:
(?:www\.(?!bbb)\.com.*?){2,}
匹配到
www.aaa.com fsdfsdf www.bbb.com df www.bbb.com dasdad www.ccc.com sadasdasda www.ddd.com
中的 "www.ccc.com sadasdasda www.ddd.com"这个正则中的 (?!bbb) 是无效的...我不知道这部分应该怎么写...
看你的表述真累。稍等下我试试看
var reg = /(www\.(?!bbb\.)[^.]+\.com([^w]|w(?!w{2}))*){2}/ig;
alert(str.match(reg));
(?:www\.(?!bbb\.(?:com|cn)).+?\.(?:com|cn|org|cc).*?){2}在遇到"www.aaa.com fsdfsdf www.bbb.com.333.com dasdad www.ccc.com sadasdasda www.ddd.com"的时候字符串里的欺骗性链接"www.bbb.com.333.com"不能被匹配到...
也就是说如果字符串是:
www.aaa.com fsdfsdf www.bbb.com.333.com
的时候,按说应该是要被正则匹配的,,但是按目前的写法匹配不到...
还是被那个(?:www\.(?!bbb)\.com)的问题困扰...
var reg = /(www\.(?!bbb\.com\s)[^.]+?\.com([^w]|w(?!w{2}))*){2}/ig;
alert(str.match(reg));不过我觉得,如果说匹配完全正确的url情况,情景比较复杂,比如你会在之后遇到很多类似的bug。
我给你写的也是基于目前的情况写的。
我看你之前的回复,你的资料查的比较多,如果往深一点层次里研究下正则,你应该能够定制出适合自己用的正则。论坛里的回复只能解决你目前的问题,但是这样的问题是延续不断的。
'bbb\.123' != 'bbb'
但是 (?!bbb) 能匹配 'bbb\.123' (匹配到了'\.123')
所以就算能用 (?:www\.(?!bbb)\.com) 这样的语法也基本无解...
睡觉去...明天再鼓捣...