JavaScript replace()/g修饰符只替换最后一个模式
JavaScript replace() /g modifier replaces the pattern only last one
Primary,我的消息(div)包含两个相同的图像,其二进制内容位于src=""
标记内。通过点击按钮,我必须从整个消息中踢出src=""
属性。我使用/g
修饰符用.replace()
方法做了这个,但它只替换了最后一次出现的内容。
我的模式是:
$("#event-1").html().replace(/<img's+id="(.+)"'s+class="(.+)"'s+src=".+">/g, "<img id='"$1'" class='"$2'">");
// It's easy-just rewrite <img> without src attr
源消息为:
Hello!
<img id="Chrysanthemum.jpg" class="attachImg" src="data:image/jpeg;base64,/9j/4AAQS">
<img id="Chrysanthemum.jpg" class="attachImg" src="data:image/jpeg;base64,/9j/4AAQS">
应该变成:
Hello!
<img id="Chrysanthemum.jpg" class="attachImg">
<img id="Chrysanthemum.jpg" class="attachImg">
但我得到了错误的结果:
<img id="Chrysanthemum.jpg" class="attachImg" src="data:image/jpeg;base64,/9j/4AAQS">
<img id="Chrysanthemum.jpg" class="attachImg">
之所以会发生这种情况,唯一的想法是由于图像的src,源字符串太大。你有什么办法解决这个问题吗?
id
必须是唯一的,您需要使用类:
<img class="attachImg Chrysanthemum" src="data:image/jpeg;base64,/9j/4AAQS" />
<img class="attachImg Chrysanthemum" src="data:image/jpeg;base64,/9j/4AAQS" />
则可以使用.removeAttr():
从匹配元素集中的每个元素中删除一个属性。
$("#event-1").find('.Chrysanthemum').removeAttr('src');
为什么不只是
$("#event-1 img").removeAttr('src');
您需要使.+
量词不贪婪,以防止正则表达式跨越这两个图像。
/<img's+id="(.+?)"'s+class="(.+?)"'s+src=".+?">/g
^ ^ ^
但我同意其他回答者的意见,他们建议删除removeAttr
的属性。
相关文章:
- Javascript/jQuery替换tamil语言输入框中的最后一个单词
- 使用javascript替换字符串中除第一个和最后一个之外的所有字符
- 如何替换字符串中最后一个出现的变量
- JavaScript 不会替换字符串的最后一个符号
- 使用JavaScript替换字符串的最后一个字符
- 字符串替换最后一个字符出现的斜杠
- 获取字符串上的最后一个数字并将其替换为 JavaScript 或 jQuery
- JavaScript:.push() 将所有存储的值替换为最后一个推送对象的值
- Ajax 触发两次替换 Rails 4 中的最后一个请求内容
- JavaScript 替换第一个/最后一个字母并将中间文本括在标签中
- Javascript 在最后一个斜杠 / 之后替换 href 的某些字符
- 如何在 JavaScript 中替换字符串中最后一个出现的两个字符之间的字符
- 替换字符串的最后一个字符
- 替换数据属性中的最后一个破折号值
- 只替换Javascript中的最后一个数字
- 将jQuery/JavaScript中、的最后一个索引替换为和
- 如何替换最后一个逗号
- 用正则表达式替换最后一个方括号内的字符串
- 只替换最后一个实例中的字母
- JavaScript replace()/g修饰符只替换最后一个模式