我的代码示例如下:
FROM <rhel6/7>
我的目的很明确:从 let str = '<p>test xss<img src=x onerror=alert(1)><h1 onmouseover=prompt(0)></h1></p>';
console.log(str.replace(/(<img [\s\S]*>?|<h1 [\s\S]*><\/h1>)/i, ''));
中提取img
和h1
代码,因此我希望结果为str
,但实际上结果是{{1} }。似乎regexp字符串img判断部分匹配str的结尾。谁能告诉我如何正确编写这个正则表达式字符串?
答案 0 :(得分:0)
这是一个不完整的代码,但只是举个例子。试试这样的事情
let parser = new DOMParser()
let doc = parser.parseFromString(parser, "text/html")
然后你可以使用doc
和东西
querySelectorAll
,就像HTMLDocument节点一样
答案 1 :(得分:0)
这个怎么样:
'<p>test xss<img src=x onerror=alert(1)><h1 onmouseover=prompt(0)></h1></p>'.replace(/<p>([\w ]+)\b.*<\/p>/, '<p>$1</p>')
答案 2 :(得分:0)
我将正则表达式规则更改为/(<img [\s\S]*?>|<h1[\s\S]*\/h1>)/ig
,现在可以正常工作。