在javascript的html模板字符串中将所有非http URL替换为http://吗?

在javascript的html模板字符串中将所有非http URL替换为http://吗?,javascript,Javascript,我正在从事一个项目,该项目使用富文本编辑器,一些用户在没有https的情况下键入链接,如“此链接已断开”。我需要找到没有http://in href属性的所有URL,并向其附加一个http://链接,如“=> “。我写了一个函数,可以在没有http://的情况下查找所有url,还有一个函数可以在字符串中查找特定模式。但是,每次它只更改一个url,而不是所有url,并且返回未定义的url。有人能帮上忙吗?非常感谢您 const text = `<h2 class="ql-align-cent

我正在从事一个项目,该项目使用富文本编辑器,一些用户在没有https的情况下键入链接,如“此链接已断开”。我需要找到没有http://in href属性的所有URL,并向其附加一个http://链接,如“=> “。我写了一个函数,可以在没有http://的情况下查找所有url,还有一个函数可以在字符串中查找特定模式。但是,每次它只更改一个url,而不是所有url,并且返回未定义的url。有人能帮上忙吗?非常感谢您

const text = `<h2 class="ql-align-center"><a href="wallacefund.info/" rel="noopener noreferrer" target="_blank" class="ql-size-large">JUMP INTO</a><span class="ql-size-large"><a href="abc.com">abc</a>`;
// try to replace all no http:// url to http://url: 
 function getReplacedStr (target, source, wantedTarget) {
   if (source.length === 0 || target.length === 0 || target.length > source.length) return;
    for (let start = 0; start < source.length; start++) {
      if (source.charAt(start) === target.charAt(0)) {
           let end = start + target.length;
           if (end <= source.length && source.substring(start, end) === target) {
              return source.replace(target, wantedTarget);
           }
      }
    }
    return source;
 }

 // get an array contains all no http:// urls : 
 // in this case should return ["wallacefund.info/", "abc.com"]
 function getNoHttpUrls (source) {
  let regexp = /href="([^\'\"]+)/g;
  let res = [...source.matchAll(regexp)], output = '';
  const noHttpUrls = res.map(ele => {
      if (source.includes(ele[1]) && !ele[1].includes('http')) {
          return ele[1];
      }
  }).filter(e => e);
  return noHttpUrls;
 }

 const output = getNoHttpUrls(text).forEach(target => {
   return getReplacedStr(target, text, `http://${target}`);
 });
const text=`;
//尝试将所有无http://url替换为http://url: 
函数getReplacedStr(目标、源、wantedTarget){
if(source.length==0 | | target.length===0 | | target.length>source.length)返回;
for(让start=0;starte);
返回nohttpurl;
}
const output=getNoHttpUrls(text).forEach(target=>{
返回getReplacedStr(target,text,`http://${target}`);
});

考虑改为将文本解析为HTML,如果他们还没有https,则在所有
href
之前添加
https
。不需要正则表达式,它们会使事情变得比需要的复杂得多:

const text=`;
const doc=new DOMParser().parseFromString(text,'text/html');
doc.querySelectorAll('a[href]')。forEach((a)=>{
const href=a.getAttribute('href');
如果(!href.startsWith('https://')){
a、 setAttribute('href','https://'+href);
}
});
console.log(doc.body.innerHTML);