javascript - 使用 .replace 复杂 BBCode 到 HTML 正则表达式

标签 javascript regex

有没有办法将这两个 .replace 语句合并为一个?

.replace(/(\[((size=)(1|2|3|4|5|6))\])/gi, '<font size="$4">')
.replace(/(\[((\/)(size))\])/gi, '</font>')

不知道有没有办法。

最佳答案

您不能仅使用 1 个正则表达式,因为您有 2 个不同的替换字符串。但是,您可以使用 1 个正则表达式捕获这些标签,然后链接另一个 replace改造“坏”的方法<font>标记到最后一个。

我认为不会有空值的属性。

var re = /\[\/?size(?:=([1-6]))?\]/gi; 
var str = '[size=6][/size]';
var subst = '<font size="$1">'; 
var result = str.replace(re, subst).replace(/<font size="">/, "</font>");
// Now, just display
document.getElementById("res").value = result;
<input id="res"/>

关于javascript - 使用 .replace 复杂 BBCode 到 HTML 正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30154908/

相关文章:

javascript - SVG.js:为什么旋转的行为很奇怪

javascript - 如何用LLVM替换浏览器javascript引擎?

javascript - 需要用Javascript替换 "$"为 "_"

python - python 中的正则表达式匹配 Twitter 句柄

javascript - 返回 View MVC/Javascript/.NET Core 时出现问题

javascript - 如何用 lodash 对 2 个对象进行深度比较?

javascript - 如何根据所选值从 JSON 数组构建列表?

regex - 将匹配文件列出到数组中

python - findall() 函数中使用 beautiful soup 的 2+ 正则表达式参数

regex - 如何在 Swift 中用 NSRegularExpression 替换大写字符串?