Zsoner
Zsoner
  • 发布:2017-09-20 14:43
  • 更新:2017-09-20 18:11
  • 阅读:1876

【报Bug】overrideResourceRequest正则有问题

分类:HTML5+

详细问题描述
正则在各种测试工具中都没问题,都可以匹配网址,但真机调试时,却只能拦截其中的一种

重现步骤
[步骤]

//监控请求  
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

2017-09-20 14:43 负责人:无 分享
已邀请:
Trust

Trust - 少说废话

提供一个可以重现上述情况的例子

http[s]?://[^/]*/[^\d]*[0-9]+  
修改为  
http[s]?://[^/]*/[^\\d]*[0-9]+

因为java中会将\识别为转义字符,需要转义一下。

  • Zsoner (作者)

    已经上传小demo附件

    2017-09-20 16:33

  • Trust

    回复 Zsoner:是要拦截“期望”中列举出来的两种url?

    2017-09-20 17:04

  • Zsoner (作者)

    回复 Trust:是的,理论上我的正则表达式两种url都可以匹配哦

    2017-09-20 17:05

  • Zsoner (作者)

    回复 Trust:在正则中http[s]?://[^/]/[^\d][0-9]+ 是完全可以针对https://e.qzzljx.com/s.php?id=1870进行匹配的,但是就是不知道在真机调试中为什么不生效

    2017-09-20 17:10

  • Trust

    回复 Zsoner:好,我看一下。

    2017-09-20 17:14

  • Zsoner (作者)

    回复 Trust:恩确实是这个问题,非常感谢

    2017-09-20 19:57

该问题目前已经被锁定, 无法添加新回复