原始版本:
<div>
<p>
<span>text</span>
</p>
<div>
正则表达式:
$.get('/some.html', function(data) {
alert(data.replace(/<p.*p>/gi, ''));
});
RegExp之后:
<div>
<>
<span>text</span>
</>
<div>
我需要获得什么:
<div>
<div>
答案 0 :(得分:2)
如果你想使用返回的html,那么你不应该通过正则表达式来做到这一点。
我不完全确定我理解你的问题,但看起来你试图从结果中删除<p>
元素?你可以使用jQuery返回的html,比如
$(data).remove('p');
答案 1 :(得分:2)
Javascript没有dotall模式,因此您的.
与新行字符不匹配。
但你可以试试这个
$.get('/some.html', function(data) {
alert(data.replace(/<p[\S\s]*?p>/gi, ''));
});
[\S\s]
表示匹配任何非空格(\S
)或任何空格(\s
)字符。换行符包含在空白字符中。
*?
是非贪婪的匹配,意味着匹配尽可能少。
只要您的代码嵌套,使用正则表达式时就会遇到问题。您必须注意这一点。可能@fearofawhackplanet的解决方案是更好的选择。
答案 2 :(得分:0)
如果我找到了你,那么你需要这样的东西...但它会使你页面中的所有div成为空白div
$('div').html('');
如果你想删除特定div然后给该div一个id,然后像这样做..
$(data).find('#divID').html(' ');
答案 3 :(得分:0)
Javascript正则表达式与\ n匹配“。”。你指定了// g标志。通常,在javascript中使用[\ s \ S]。
alert(data.replace(/<p[\s\S]*?p>/i, ''));