正则表达式找到所有关闭的html标签,所有标签都单独打开

时间:2015-03-21 15:28:15

标签: javascript regex

我有一个javascript函数对字符串执行过滤。我目前有过滤器剥离所有html标签。

return String(text).replace(/<[^>]+>/gm, '');

我意识到我实际上需要执行两个操作: 首先,用<br>替换所有结束标记,然后用第二个操作删除所有开始标记。

我对regEx不太熟悉。如何指定/<[^>]+>/gm仅打开或关闭?

1 个答案:

答案 0 :(得分:3)

您需要使用双重替换功能。

> var str = "<h1>foo bar</h1>"
undefined
> str.replace(/<\w[^>]*>/, "").replace(/<\/[^>]+>/, "<br>")
'foo bar<br>'

OR

使用单一替换功能,该功能使用基于捕获组的正则表达式。

> var str = "<h1>foo bar</h1>"
> str.replace(/<(\w+\b)[^>]*>([^<>]*)<\/\1>/, '$2<br>')
'foo bar<br>'

我们必须将(\1)反向引用到第一个捕获组而不是第二个捕获组,因为第一个捕获组包含标记名称。