详细问题描述
正则在各种测试工具中都没问题,都可以匹配网址,但真机调试时,却只能拦截其中的一种
重现步骤
[步骤]
复制代码//监控请求
view.listenResourceLoading({
match: ".*"
}, function (event) {
console.log(JSON.stringify(event));
});
//拦截
var view = plus.webview.currentWebview();
view.overrideResourceRequest([{
match: "http[s]?://[^/]*/[^\d]*[0-9]+",
redirect: "_www/none.js"
}]);
[结果]
在重定向文件_www/none.js中
console.log('重定向文件:'+JSON.stringify(window.location));
确实可以看到第二种可以拦截重定向,而第一种始终不能重定向
我曾尝试换过不同的正则(结尾以ID结束的广告),在平常的正则测试工具中没问题,但第一种始终不能拦截
如:
[a-zA-Z]+://[^/]/(s.php\?id=)?[0-9](.js)?
http[s]?://[^/]/[^\d][0-9]+
我曾搜到http://ask.dcloud.net.cn/question/27913 说:5+API里面涉及到的正则,通常是Java的正则,而不是JavaScript的。是依靠native层进行拦截的,这点需要特别注意。
可是网上对于java 的正则资料好像也是一样的,所以不知道问题出在哪里了
[期望]
拦截以下类型的请求
https://e.qzzljx.com/s.php?id=1870
https://zx.baosmx.com/52700
运行环境
[系统版本]
win7
[浏览器版本]
版本 60.0.3112.113
[IDE版本]
8.8.0.201706142254
放牛娃的春天 (作者)
已经上传小demo附件
2017-09-20 16:33
Trust
回复 放牛娃的春天:是要拦截“期望”中列举出来的两种url?
2017-09-20 17:04
放牛娃的春天 (作者)
回复 Trust:是的,理论上我的正则表达式两种url都可以匹配哦
2017-09-20 17:05
放牛娃的春天 (作者)
回复 Trust:在正则中http[s]?://[^/]/[^\d][0-9]+ 是完全可以针对https://e.qzzljx.com/s.php?id=1870进行匹配的,但是就是不知道在真机调试中为什么不生效
2017-09-20 17:10
Trust
回复 放牛娃的春天:好,我看一下。
2017-09-20 17:14
放牛娃的春天 (作者)
回复 Trust:恩确实是这个问题,非常感谢
2017-09-20 19:57