我有一个很大的字符串,就像来自网络的正文 html,我想识别 url 并在每个 url 的末尾添加一些文本。
问题是,这并不适用于所有每个网址,它仅适用于与该网址内某个位置的 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;
});
}
最佳答案
您需要的是一个正则表达式查找查询,Javascript 本身不支持该查询。但是,在这里调整第一个解决方案:mimic-lookbehind-javascript ,你可以做出一些做正确事情的东西。
剩下的问题是 URL 的终止符。例如,如果 URL 后面始终有一个空格,那么类似这样的操作就可以工作:
body=body.replace(/(\/pollyn\/.*?)?\/ /g, function(a,b){return b? b+"/test ":a;})
这会搜索“/pollyn/”,然后允许对任何字符进行惰性匹配(“.*?”),直到找到正斜杠和空格。然后,它将用 lambda 函数中定义的文本替换正斜杠和空格(还需要包含开头的正斜杠和结尾的空格)。
关于javascript - 从大字符串中检测 url 并在每个 url 的末尾添加一些文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36088839/