【问题标题】:Regex: replace img tag with its alt attribute正则表达式:用其 alt 属性替换 img 标签
【发布时间】:2016-05-03 14:00:00
【问题描述】:

我在变量 frontendtext 中有一个字符串,其中包含文本和 img 标签。我希望其中的 img 标签被替换为仅使用正则表达式的 alt 属性值。

var frontend1 = frontendtext.replace(/<img.*?alt="(.*?)".*>/g, 'O');

它用O 替换我的字符串,但我只想用alt 替换img 标记,字符串的其余部分保持不变。

【问题讨论】:

  • 你能告诉我怎么做吗?因为我不是正则表达式的人。我就像正则表达式的 Jon Snow,我什么都不知道
  • 显示当前frontendtext的内容
  • 你好罗伯茨。你好吗
  • 替换标签后,它看起来像这样:你好????罗伯茨。你好吗❓

标签: regex text tags


【解决方案1】:

通过使用捕获组,您可以将整个字符串替换为捕获组引用

var frontendtext = "Hello this is an image <img src=\"image.jpg\" alt=\"!!Just some image alt text!!\" /> and foo bar.";
var frontend1 = frontendtext.replace(/<img.*?alt="(.*?)"[^\>]+>/g, '$1');
alert(frontend1);

https://jsfiddle.net/yoqkdapa/

正则表达式是;

&lt;img - 匹配 &lt;img 标签

.*?alt= - 匹配 alt 属性的所有内容

"(.*?)" - 匹配 alt 标签后引号之间的所有内容

[^\&gt;]+ - 除了 &lt;img 标记的结束 &gt; 之外,其他所有内容都惰性匹配

&gt; - 匹配&lt;img标签的结尾

【讨论】:

  • 如果写入 DOM,浏览器会将其呈现为空格:jsfiddle.net/yoqkdapa/3
  • 你能解释一下这个表达吗?其他人会在以后读到这个。
  • 我将 var frontend1 = frontendtext.replace(/]+>/g, '$1 ');这对我有用
猜你喜欢
  • 2023-03-09
  • 2011-11-20
  • 1970-01-01
  • 1970-01-01
  • 2017-07-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-27
相关资源
最近更新 更多