正则表达式多次替换组

时间:2014-05-31 10:29:55

标签: javascript regex

我正在尝试使用此正则表达式删除所有html标记:

<.+>(.+)</.+>

Regular expression visualization

我这样替换:

"<b onclick=\"foo\">Foo</b> bar".replace(new RegExp("\\<.{1,}\\>(.{1,})\\</.{1,}\\>", "g"), "$1")

这很好,但是,这不起作用:

"<b onclick=\"foo\">Foo</b> bar <b>hello</b>".replace(new RegExp("\\<.{1,}\\>(.{1,})\\</.{1,}\\>", "g"), "$1")

我得到hello

2 个答案:

答案 0 :(得分:1)

使用lazy而不是贪心

<.+?>

以及g修饰符

像这样:

"<b onclick=\"foo\">Foo</b> bar <b>hello</b>".replace(/<.+?>/g,'');

输出:

Foo bar hello

答案 1 :(得分:0)

你可以这样做:

result = subject.replace(/<[^>]*>/g, "");

<强>解释

  • 匹配字符“&lt;”字面意思<
  • 匹配任何不是“&gt;”[^>]*的字符
    • 在零和无限次之间,尽可能多次,根据需要回馈(贪婪)*
  • 匹配字符“&gt;”字面意思>