我有一个很大的字符串,比如来自网络的正文html,我想识别网址并在每个网址的末尾添加一些文字。
事情是,这不是针对所有网址,而是针对与该网址内部某处的pollyn文本匹配的网址。
像这样:http://www.domine.com/something/pollyn/something/
我需要的是:http://www.domine.com/something/pollyn/something/thisisthextadedd
我尝试:
body = body.replace(/(pollyn)\/?/ig, '$1something');
但问题在于,是否重新审视了pollyn一词。
提前致谢。
更新
解决方案是这样的:
function urlify(text) {
var urlRegex = /(https?:\/\/[^\s]+)/g;
return text.replace(urlRegex, function(url) {
if(url.indexOf("pollyn") !== -1 || url.indexOf("poll") !== -1){
url = url.replace('"',"");
return url+"&something";
}
return url;
});
}
答案 0 :(得分:0)
您需要的是查询背后的正则表达式,Javascript本身不支持。但是,在这里调整第一个解决方案:mimic-lookbehind-javascript,你可以做出正确的事情。
剩下的问题是URL终止的内容。例如,如果URL之后总是有空格,那么这样的东西可以起作用:
body=body.replace(/(\/pollyn\/.*?)?\/ /g, function(a,b){return b? b+"/test ":a;})
这会搜索" / pollyn /"然后允许任何字符的惰性匹配("。*?"),直到找到正斜杠和空格。然后它将使用lambda函数中定义的文本替换正斜杠和空格(它还需要包括开头的正斜杠和结尾处的空格)。