请问js如何用正则做到条件替换

我现在有一段字符串:

let str = `
  <img src="www.BING.com">
  <img style="" src="www.baidu.com" data-src="任意值" data-uuid="任意值" style="任意值">
  <a href="www.baidu.com">
  www.baidu.com
`;

我想用js正则只将img标签的src="www.baidu.com"替换为 src="www.google.com", 其他的内容不变,请问怎么才能做到呢?

image.png

阅读 3.4k
3 个回答
`
  <img src="www.baidu.com" data-src="任意值" data-uuid="任意值">
  <a href="www.baidu.com">
  www.baidu.com
`.replace(/\ssrc=".*?"/, ' src="www.google.com"')

更新:

`
  <img src="www.BING.com">
  <img style="" src="www.baidu.com" data-src="任意值" data-uuid="任意值" style="任意值">
  <a href="www.baidu.com">
  www.baidu.com
`.replace(/(?<=<img.*?\ssrc=")www\.baidu\.com/, 'www.google.com')

用到的知识就是仅仅是正则而已,但是正则水很深,知识点很多

const regex = /(<img src=")[^"]+("\s?>)/;
// const regex = /(<img( [a-z\-]+="[^"]+")* src=")[^"]+(")/;
str = str.replace(regex, "$1www.google.com$2");
console.dir(str);

image.png

第一匹配标签,第二替换内容。

let str = `
  <img src="www.baidu.com" data-src="任意值" data-uuid="任意值" style="任意值"
>
  <a href="www.baidu.com">
  www.baidu.com
`;
str.replace(/<img(.*?\s)src="www.baidu.com"(.*?\s)>/gi, function(s){
 return s.replace('src="www.baidu.com"','src="www.google.com"');
});
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题