Page 1 of 1

请教一个不包括的写法

Posted: Apr 01 2010, 15:42
by 不夜侯
想制定一个规则去过滤天涯不相干的js,我的思路是这样的,凡是src路径结尾不是以下内容的js一律过滤。

Code: Select all

[\/_](ty_vip|global-all|techContentStyleCtrl|publicContentStyleCtrl|tianyaTopGuideJs100percent|techGoPage|nav_top_bbs|leftnav_v2-min).js
写了好多种,感觉不太对。
请教正确的写法应该如何定?谢谢!

Code: Select all

[Patterns]
Name = "tianya JavaScript"
Active = TRUE
URL = "$TYPE(htm)*.tianya.cn/"
Bounds = "<script\s*</script>"
Limit = 256
Match = "<script\s([^>]+&&*src=$AV(*[\/_](^*(ty_vip|global-all|techContentStyleCtrl|publicContentStyleCtrl|tianyaTopGuideJs100percent|techGoPage|nav_top_bbs|leftnav_v2-min))[\/._]*js*))>*"

Re: 请教一个不包括的写法

Posted: Apr 01 2010, 21:08
by phoenix

Code: Select all

[Patterns]
Name = "tianya JavaScript"
Active = TRUE
URL = "$TYPE(htm)*.tianya.cn/"
Bounds = "<script\s*</script>"
Limit = 256
Match = "*src=$AV((^*[\/_](ty_vip|global-all|techContentStyleCtrl|publicContentStyleCtrl|tianyaTopGuideJs100percent|techGoPage|nav_top_bbs|leftnav_v2-min).js)*)*"
另外 [\/_] 有问题。如果要匹配 \ ,应该写成 [\\/_] ;如果不要匹配 \ ,写成 [/_] 就可以了。

Re: 请教一个不包括的写法

Posted: Apr 01 2010, 21:45
by 不夜侯
phoenix wrote:

Code: Select all

[Patterns]
Name = "tianya JavaScript"
Active = TRUE
URL = "$TYPE(htm)*.tianya.cn/"
Bounds = "<script\s*</script>"
Limit = 256
Match = "*src=$AV((^*[\/_](ty_vip|global-all|techContentStyleCtrl|publicContentStyleCtrl|tianyaTopGuideJs100percent|techGoPage|nav_top_bbs|leftnav_v2-min).js)*)*"
另外 [\/_] 有问题。如果要匹配 \ ,应该写成 [\\/_] ;如果不要匹配 \ ,写成 [/_] 就可以了。
谢谢!
请问为什么有红色 *
*src=$AV((^*[\/_](ty_vip|global-all|techContentStyleCtrl|publicContentStyleCtrl|tianyaTopGuideJs100percent|techGoPage|nav_top_bbs|leftnav_v2-min).js)*)*

另外 [\/_] ,应该是 [/_],谢谢指正。我将 . / _ 前经常加 \ ,以为可有可无。

Re: 请教一个不包括的写法

Posted: Apr 01 2010, 22:31
by phoenix
不夜侯 wrote: 请问为什么有红色 *
*src=$AV((^*[\/_](ty_vip|global-all|techContentStyleCtrl|publicContentStyleCtrl|tianyaTopGuideJs100percent|techGoPage|nav_top_bbs|leftnav_v2-min).js)*)*
因为 (^blahblah) 匹配的是一个位置,表示该位置之后不能有 blahblah,这个位置并不消耗字符,所以我们需要 * 来消耗掉 src 中的值。