Regex 如何为所有图像预先添加域 let bar=”“; bar=bar.replaceAll(/src=\\\”(.*)\\“/gi,'src=”https://blog.jonesrussell.xyz/$1"');

Regex 如何为所有图像预先添加域 let bar=”“; bar=bar.replaceAll(/src=\\\”(.*)\\“/gi,'src=”https://blog.jonesrussell.xyz/$1"');,regex,web,Regex,Web,这并不能产生预期的结果,即在所有图像src前面加上前缀。不确定为什么要使用RegExp进行此操作(一般来说,对于如此多的边缘情况,它不是执行任何HTML解析/操作的正确工具)。您可以正确使用并执行以下操作: let域=”https://blog.jonesrussell.xyz"; let bar=“”; var htmlDoc=new DOMParser().parseFromString(bar,'text/html'); for(图片为[…htmlDoc.querySelectorAll

这并不能产生预期的结果,即在所有图像src前面加上前缀。

不确定为什么要使用RegExp进行此操作(一般来说,对于如此多的边缘情况,它不是执行任何HTML解析/操作的正确工具)。您可以正确使用并执行以下操作:

let域=”https://blog.jonesrussell.xyz";
let bar=“”;
var htmlDoc=new DOMParser().parseFromString(bar,'text/html');
for(图片为[…htmlDoc.querySelectorAll('img')){
image.src=domain+image.getAttribute('src');//使用getAttribute()确保解析器在能够预先提供我们自己的域值之前不会尝试自动计算当前域的'src'属性
console.log(图像);

}
使用正则表达式操纵HTML是不可靠的。正如@esqew指出的,使用HTML解析器更安全

如果您确定不支持角点情况,则可以使用此正则表达式:

let bar=”“;
bar=bar.replace(/\b(src=[“']”?)/gi,$1https://blog.jonesrussell.xyz');

console.log(bar);
/src=“(.*)”/gi
?@Russell:有问题吗?这是否符合您的需要?@Russell:如果有帮助,愿意接受答案吗?
  let bar = "<img src=\"/assets/img/screenshot-scripts.png\" alt=\"scripts screenshot\" class=\"half center\" /><img src=\"/assets/img/screenshot-scripts-sed.png\" alt=\"scripts sed screenshot\" />";
bar = bar.replaceAll(/src=\\"(.*)\\"/gi, 'src="https://blog.jonesrussell.xyz/$1"');