1
<div id="wrapper">
  <div>if(true)<span class="openParen bm1">{</span></div>
  <div>cout<<"hey";cin>>x;</div>
  <div><span class="closeParen bm1>}</span></div>
</div>

我想找到cout使用正则表达式之类的东西/cout[^;]*;/,然后用span.

<div id="wrapper">
  <div>if(true)<span class="openParen bm1">{</span></div>
  <div><span id="group">cout<<"hey";</span>cin>>x;</div>
  <div><span class="closeParen bm1>}</span></div>
</div>

我将如何找到正则表达式的出现并用跨度包装它?请问有人吗?

更新:我插入cin>>x;之后cout, cin 不应该被包装。

我想用这样的东西

text.replace(/(cout[^;]*;)/g, '<span class="group">$1</span>');

但我不知道如何在 DOM 中应用它。任何人?

cin>> 和 cout<< 的BUG ,直到 ; http://jsfiddle.net/3N4AE/11/

4

3 回答 3

1

更新Regex方式 DEMO

$('#wrapper div').filter(':contains("cout")').each(function () {
    var x = $(this);
    var txt = x.text();
    x.html(txt.replace(/(cout[^;]*;)/g, '<span class="group">$1</span>'));
});

演示

var x =$('#wrapper div').filter(':contains("cout")');
var txt = x.text();
x.text('').append('<span id="group">'+txt+'</span>');

OP更新问题后更新

演示

var x = $('#wrapper div').filter(':contains("cout")');
var txt = x.text();
x.text('');
var cout = txt.split(';');
$.each(cout, function (i, val) {
    if (val.indexOf('cout') > -1) {
        x.append('<span class="group">' + val + ';</span>');
    } else {
        x.append(val + ';');
    }
});

更新

演示

$('#wrapper div').filter(':contains("cout")').each(function () {
    var x = $(this);
    var txt = x.text();
    x.text('');
    var cout = txt.split(';');
    $.each(cout, function (i, val) {
        if (val.indexOf('cout') > -1) {
            x.append('<span class="group">' + val + ';</span>');
        } else {
            x.append(val + ';');
        }
    });
});

考拉开发评论后更新

演示

$('#wrapper div').filter(':contains("cout")').each(function () {
    var x = $(this);
    var txt = x.text();
    x.text('');
    var cout = txt.split(';');
    $.each(cout, function (i, val) {
        if (val.indexOf('cout') > -1) {
            x.append('<span class="group">' + val + ';</span>');
        } else if ($.trim(val) != '') {
            x.append(val + ';');
        }
    });
});
于 2013-08-31T06:14:57.403 回答
1

这是使用 jQuery 将正则表达式应用于 DOM 的方式:

$('#wrapper div').filter(':contains("cout")').each(function () {
    $(this).html($(this).text().replace(/(cout[^;]*;)/g, '<span class="group">$1</span>'));
});

演示小提琴

于 2013-08-31T06:42:18.230 回答
-2

这应该有帮助

var pattern = /cout[^;]*;/;

var txt = $('#wrapper').find('div:nth-child(2)').text();
var el = $('#wrapper').find('div:nth-child(2)');

$(el).text("").append('<span id="group">' + txt + '</span');

jsfiddle

于 2013-08-31T06:08:39.783 回答