将[b:“text”]的每次出现替换为<b> text </b>,其中text可以是任何内容

时间:2015-06-12 14:04:06

标签: javascript regex replace

我想使用JavaScript和RegEx将[b: "text"]的每次出现替换为<b>text</b>。目前我知道如何使用[b: ""]<b></b>替换为'/\[b: ""\]/g',但如果"符号之间有文字,我无法弄明白该做什么(必须放在ThreadPool.QueueUserWorkItem(foo, null); 之间html标签)。

3 个答案:

答案 0 :(得分:1)

您需要使用a capturing group ((.*))来匹配引号之间的文字,并在替换时使用该文字。

请注意,如果您必须处理字符串中的转义引号或任何复杂的引号,那么您将要使用真正的解析器而不是使正则表达式复杂化(我建议使用像{{3}这样的工具})。

&#13;
&#13;
GET
&#13;
var text = [
  '[b: ""]',
  '[b: "hello world"]',
  '[b:"hello terse"]'
];

var rex = /\[b:\s?"(.*)"\]/;
var out = text.map(function(line) {
  return line.replace(rex, '<b>$1</b>');
});

document.getElementById('r').textContent = JSON.stringify(out);
&#13;
&#13;
&#13;

答案 1 :(得分:0)

您可以使用

var string = "";
var replaced = string.replace(/\[b:\s"(.*?)"\]/g, '<b>$1</b>')

演示:Example

答案 2 :(得分:0)

试试这个。这将捕获引号之间的空字符和所有字符。

text.match(/\[b: "(.+|)"]/g);

演示:http://www.regexr.com/3b6mi

.+捕获一个或多个非空白字符

|是一个合乎逻辑的OR

( )创建一个新的捕获组