来自正则表达式匹配的jQuery addClass

时间:2013-02-27 14:53:26

标签: jquery regex

我想从此处更改输出块:

<div>Lorem ipsum dolor sit amet (consectetuer adipiscing elit sed diam nonummy nibh euismod tincidunt)</div>

到此:

<div>Lorem ipsum dolor sit amet <span class="italics">(consectetuer adipiscing elit sed diam nonummy nibh euismod tincidunt)</span></div>

JavaScript的:

var div = $('div');
var matches = div.match(/\((.*?)\)/);

if (matches) {
  matches.css('color', 'red');
}

基本上,使用正则表达式使用addClass将所有内容包装在(此处)中。有什么想法吗?

我觉得这很接近:http://jsfiddle.net/saltcod/DjHUt/

3 个答案:

答案 0 :(得分:1)

您可以使用html方法:

$('div').html(function(i, h){
   return h.replace(/\((.*?)\)/, '<span class="italics">$&</span>');
})

http://jsfiddle.net/WmCLz/

答案 1 :(得分:0)

试试这个:

div = $('div');
div.html(div.text().replace(/\([^)]+\)/g, '<span class="italics">$&</span>'));

现场演示:

http://jsfiddle.net/oscarj24/weJWL/

答案 2 :(得分:0)

这应该可以胜任:http://jsfiddle.net/cqTq7/2/

这是我的代码:

var div = $('div'),
    divHTML = div.html();
var match = divHTML.match(/\((.*?)\)/);

divHTML = divHTML.replace(match[0], '<span class="italics">$&</span>');

div.html(divHTML);

请注意,match函数是JavaScript中的函数,而不是jQuery。在这里,我还使用JavaScript replace函数。