从大字符串中检测网址并在每个网址的末尾添加一些文字

时间:2016-03-18 15:53:59

标签: javascript regex

我有一个很大的字符串,比如来自网络的正文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;
      });
    }

1 个答案:

答案 0 :(得分:0)

您需要的是查询背后的正则表达式,Javascript本身不支持。但是,在这里调整第一个解决方案:mimic-lookbehind-javascript,你可以做出正确的事情。

剩下的问题是URL终止的内容。例如,如果URL之后总是有空格,那么这样的东西可以起作用:

body=body.replace(/(\/pollyn\/.*?)?\/ /g, function(a,b){return b? b+"/test ":a;})

这会搜索" / pollyn /"然后允许任何字符的惰性匹配("。*?"),直到找到正斜杠和空格。然后它将使用lambda函数中定义的文本替换正斜杠和空格(它还需要包括开头的正斜杠和结尾处的空格)。