如何从JS中的Regex中获取选定的str.replace值

时间:2015-04-28 20:55:38

标签: javascript jquery html regex

好的,我理解标题可能有点令人困惑,让我详细说明。 所以开始我正在制作一个BBCode输入部分。然后它会将代码从BBCode传输到HTML。现在的问题是我遇到了MINIMAL问题。让我在继续之前发布我的代码:

var newer = $('#my_textarea').val().replace(/\[b\]/gi, '<b>');

现在让我这样说,它会使用[b]代码正确替换<b>代码。我的问题是我不知道如何为所有标签做到这一点。我试过用这个缩短代码:

var newer = $('#my_textarea').val().replace(/\[(?:b|u|i)\]/gi, '<???>');

然后它将使用正确的HTML标记替换所有标记(粗体,下划线和斜体)。然而,我该怎么做呢?如何使用找到的BBCode标记替换HTML标记?我的意思是正则表达式(?:b|u|i)的这一部分,它选择三个字母中的任何一个,我怎么能将相同的字母添加到HTML标签?你明白我的问题是什么吗? :)请帮忙,谢谢!!

2 个答案:

答案 0 :(得分:3)

使用$2获取第二个选定的组

var newer = $('#my_textarea').val().replace(/(\[(b|u|i)\])/gi, '<$2>');

了解和创建RegEx的好网站:https://regex101.com/

要同时抓住[b],[u],[i]以及[\b],[\u],[\i],请使用以下内容:

var newer = $('#my_textarea').val().replace(/(\[((\/?)(b|u|i))\])/gi, '<$2>');

答案 1 :(得分:0)

下面的正则表达式会将BBCode转换为HTML:

result = subject.replace(/\[(b|i|p)\](.*?)\[\/(b|i|p)\]/g, "<$1>$2</$3>");

您需要添加更多标签,但您明白了。

演示

http://jsfiddle.net/tuga/sp5597aj/1/