在原始文本中找到带有div的单词

时间:2012-07-17 12:21:07

标签: jquery regex

我正在尝试找到一个结尾的单词,例如INFOENDINFO,并将这两个单词中的所有内容包含在一个.INFO

类的div中
$(document).ready(function() {
var content = $('.content').html();
var regex = /INFO.*ENDINFO/gi;
var info = content.match(regex);

$('.INFO').html(info);
});​

例如:之前。

<div class="project_content"><img src="http://lorempixel.com/g/400/200/">
<br>
INFO
<br>
Hello I'm an info div
<br>
ENDINFO
<br>
Additonal content outside of info div

</div>​

后:

<div class="project_content"><img src="http://lorempixel.com/g/400/200/">
<br>
<div class=".INFO">
<br>
Hello I'm an info div
<br>
</div>
<br>
Additonal content outside of info div

</div>​

这似乎不起作用。正如您在jsfiddle中看到的那样。任何帮助都会很棒。

2 个答案:

答案 0 :(得分:2)

从您的示例代码中,您可能希望了解jquery的工作原理。您使用的选择器(.INFO#content)与HTML中的任何元素都不匹配,因此您的代码不执行任何操作。

为了帮助您入门,这是实现您所述目标的一种方式:http://jsfiddle.net/JRHse/6/

$(document).ready(function(){
    var html = $('#project_content').html();
    var new_html = html.replace(/(INFO((.|\s)*?)ENDINFO)/, "<div class='INFO'>$2</div>");
    $('#project_content').html(new_html);        
});

以下是代码的快速细分:

$('#project_content') 

将元素与id='project_content'匹配。

var html = $('#project_content').html();

我们定位该元素并将其HTML内容存储在html var。

var new_html = html.replace(/(INFO((.|\s)*?)ENDINFO)/, "<div class='INFO'>$2</div>");

然后我们执行您想要的替换并将输出存储为new_html

$('#project_content').html(new_html); 

最后,我们用修改后的版本覆盖HTML内容。

答案 1 :(得分:1)

&#39; .&#39;不会匹配white-space个字符。试试这个正则表达式:

var regex = /INFO(.|\s)*ENDINFO/gi;

Live demo