javascript - 将图像正则表达式转换为 BBCode 的问题

标签 javascript regex bbcode

我正在为自己的 phpBB3 做一些事情,我正在尝试将这些微笑转换回原始的笑脸状态,例如

:)  :(  :O  :P

由于笑脸的 HTML 包含以下内容:

/<img src=".*" alt="(.*)" title=".*">/gi

替换为:

$1

但是,当我有多个笑脸时,它只显示最后一个笑脸,例如如果是这样的话:

alt text http://uimgz.com/i/R2e3H8g5D8.png

它变成了这样:

:twisted:

这是右边最后一个笑脸,为什么它没有替换并返回所有应该返回的笑脸状态,如下所示:

:) :o :twisted:

正则表达式看起来不错,但我不知道问题是什么,所有正则表达式都使用 for() 循环进行替换循环,所以这不是问题。

多个笑脸 HTML:

<img src="./images/smilies/icon_e_smile.gif" alt=":)" title="Smile" /> <img src="./images/smilies/icon_e_surprised.gif" alt=":o" title="Surprised" /> <img src="./images/smilies/icon_twisted.gif" alt=":twisted:" title="Twisted Evil" />

最佳答案

将正则表达式更改为此并重试:

/<img src="[^"]*" alt="([^"]+)" title="[^"]*">/gi

正则表达式引擎通常是贪婪的。它将尝试匹配与某些内容相匹配的最长文本。在你的情况下,我将所有三个链接匹配为一个。我在这里所做的是将 src 属性内的内容限制为不包含 ",这样它就不会一直匹配到第三个 src。 它将其视为 src 属性 ./images/smilies/icon_e_smile.gif" alt=":)" title="Smile" /> <img src="./images/smilies/icon_e_surprised.gif" alt=":o" title="Surprised" /> <img src="./images/smilies/icon_twisted.gif

关于javascript - 将图像正则表达式转换为 BBCode 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4641357/

相关文章:

javascript - 调整div大小时如何保持用户的滚动位置

javascript - 如何获取 OwlCarousel2 中上一项和下一项的索引?

Python研究

javascript - 正则表达式不会从字符串中删除非数字

c# - 如何替换字符串中每次出现的一组分隔符之间的任何特殊字符的所有实例?

c# - 使用 HTMLAgilityPack 将链接转换为 BBCODE?

javascript - GMaps JS 地理编码 : Using/Passing Variables With Asynchronous Geocode Function?

javascript - Angular 引导 ui 中的选项卡移动

php - 删除字符串中 bbcode 标签之间的空格

javascript - 在 Javascript 中解析 BBCode