为了账号安全,请及时绑定邮箱和手机立即绑定

各位大佬,帮我看一下js正则反向引用的问题(微信小程序内)

各位大佬,帮我看一下js正则反向引用的问题(微信小程序内)

ibeautiful 2019-05-13 11:16:03
描述:后台给出一长串字符串,里面包括文本和链接,目前我需要做的就是将串解析成下面预期结果那样的一个数组,但是在正则引用那里出现了问题,假设原串中有三个链接,当前我自己的解析方法会造成最后一个覆盖前面两个链接的问题,不是预期的结果,麻烦各位大神有好的办法可以交流或者指导一下,谢谢微信小程序内不支持直接操作dom//原串vardesc='出于HTTPS的安全策略,浏览器会阻断HTTPS上的非安全请求(HTTP)请求,但是我们可以使用被动混合内容的方式来跨越这个安全策略'+'去看看怎么请求'+'这时候,浏览器只会在控制台报warning,而不会block我们的请求。查看规则。'+'因为攻击者可以通过不安全的HTTP内容来攻击安全的HTTPS页面去交互';//目标串,类似这样,需要将原串里面的多个a链接处理成规定形式,并保持原串的各位置不变/**'出于HTTPS的安全策略,浏览器会阻断HTTPS上的非安全请求(HTTP)请求,但是我们可以使用被动混合内容的方式来跨越这个安全策略'+'去看看怎么请求'+'这时候,浏览器只会在控制台报warning,而不会block我们的请求。查看规则。'+'因为攻击者可以通过不安全的HTTP内容来攻击安全的HTTPS页面去绑定'***///预期结果[{'MsgType':'text','MsgContent':'出于HTTPS的安全策略,浏览器会阻断HTTPS上的非安全请求(HTTP)请求,但是我们可以使用被动混合内容的方式来跨越这个安全策略'},{'MsgType':'navigator','MsgContent':'https://api.520.com/clientpage/money.php?url=xxx&title=xxx','MsgParam':'去看看怎么请求',},{'MsgType':'text','MsgContent':'这时候,浏览器只会在控制台报warning,而不会block我们的请求。'},{'MsgType':'navigator','MsgContent':'https://api.520.com/activity/convention.php?url=xxx&title=xxx','MsgParam':'查看规则',},{'MsgType':'text','MsgContent':'因为攻击者可以通过不安全的HTTP内容来攻击安全的HTTPS页面'},{'MsgType':'navigator','MsgContent':'/pages/goplay/goplay','MsgParam':'去交互',},]varMsgBody=[];varMsgContent=null,MsgType=null;vartmsg='',amsg,restMsgIndex=nullvarexpr=/]+?href=["']?([^"']+)["']?[^>]*>([^]*>([\s\S]*?)',"ig");//这里reg有缓存,导致了后面覆盖前面的varlink=RegExp.$1;//这里是a链接href的内容varalt=RegExp.$2;//这里是a链接可点击文字的内容console.log(url,link,alt)//解析两种预定义的a链接,解析成可识别链接if(pattern1.test(url))//in开头类型的{switch(true){casenewRegExp("goplay","ig").test(link):src=app.globalData.navigateTo.goPlay;break;casenewRegExp("userinfo","ig").test(link):vartemp=(link).split('?');src=app.globalData.navigateTo.getUserInfo+'?'+temp[1];break;casenewRegExp("setmyinfo","ig").test(link):src=app.globalData.navigateTo.setUserInfo;break;casenewRegExp("setting","ig").test(url):break;casenewRegExp("mytrends","ig").test(url):break;casenewRegExp("myphoto","ig").test(url):break;casenewRegExp("visitorrecord","ig").test(url):break;casenewRegExp("feedback","ig").test(url):src=app.globalData.navigateTo.feedBack;break;casenewRegExp("vip_pay","ig").test(url):src=app.globalData.navigateTo.vipRecharge;break;casenewRegExp("money_pay","ig").test(url):src=app.globalData.navigateTo.goldRecharge;break;casenewRegExp("payment","ig").test(url):src=app.globalData.navigateTo.goldRecharge;break;}}elseif(pattern2.test(url))//web开头类型的{src=(link).split('//');//替换成https,替换掉端口if(src[1].indexOf("https")==-1){param=src[1].replace(/http/,'https')+'//'+src[2];param=param.replace(/:8891/,'')}else{param=src[1]+'//'+src[2]}//这种直接使用H5页面//src=app.globalData.navigateTo.clientPage+'?url='+param+'&title='+altsrc='测试'+'?url='+param+'&title='+alt}MsgContent=amsg[i];MsgBody.push({'MsgType':MsgType,'MsgContent':src,'MsgParam':alt,})restMsgIndex=desc.indexOf(amsg[i])+amsg[i].length;desc=desc.substring(restMsgIndex);}if(desc){//最后还存在文本MsgType='text';MsgBody.push({'MsgType':MsgType,'MsgContent':desc})}}
查看完整描述

2 回答

  • 2 回答
  • 0 关注
  • 449 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信