在jQuery中获取匹配的正则表达式替换

时间:2013-05-12 17:50:21

标签: jquery regex replace

我的目标是将任何内容用引号括在具有特定ID的div中。

例如,如果我有一个字符串:

Bananas are "green", "pineapples" are blue.

我想得到这个:

Bananas are <div id="mydivname">"green"</div>, <div id="mydivname">"pineapples"</div> are blue.

问题在于我不知道括号中究竟是什么,并不重要,我只是想将它包裹在字符串中。

我提出了这样的代码:

var string = $('#somediv').html().replace(/\".*?\"/g,'<div id="mydivname">' + regexp + '</code>');
$('#somediv').html(string)

我的问题是我无法获得此元素的正则表达式,我只能用一些值替换,但我想将它包装在<div>中。

如何从.replace获取匹配的regExp以将其用作replaceText?

1 个答案:

答案 0 :(得分:1)

您可以使用对捕获组的引用

$('#somediv').html().replace(/(".*?")/g, '<div class="foo">$1</div>');

或替换功能:

$('#somediv').html().replace(/".*?"/g, function(match) {
    return '<div class="foo">' + match + '</div>';
});

小心替换HTML中的内容。这会使#somediv的孩子破坏引用属性。

如果可以,请使用.text()代替.html(),或使用此替换函数迭代文本节点。