我有一个javascript函数对字符串执行过滤。我目前有过滤器剥离所有html标签。
return String(text).replace(/<[^>]+>/gm, '');
我意识到我实际上需要执行两个操作:
首先,用<br>
替换所有结束标记,然后用第二个操作删除所有开始标记。
我对regEx不太熟悉。如何指定/<[^>]+>/gm
仅打开或关闭?
答案 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
)反向引用到第一个捕获组而不是第二个捕获组,因为第一个捕获组包含标记名称。