jQuery:包装一个匹配正则表达式的字符串

在某个元素中,我需要选择与某个正则表达式匹配的不同字符串并用标签包装它们。 我怎样才能做到这一点 ?

我试过了 :

var str = jQuery("#my_div").html(); var regex = "\([az]{2}\)"; jQuery("#my_div").html(str.replace(regex, "$1")); 

..但是这会包裹整个元素而不是元素中的选定字符串。

您的示例的问题是您没有捕获组,将正则表达式更改为(\([az]{2}\))

以下是html 中正则表达式替换的示例: http : //jsfiddle.net/gibble/NYVWg/

  bla bla 
this (is) some text this (is) some text
bla bla​ var oldHtml = $('#test').html(); var newHtml = oldHtml.replace(/(\([az]{2}\))/g,"$1"); $('#test').html(newHtml);​

鉴于您的正则表达式中包含子表达式,您的代码应该可以正常工作。 看看这个jsfiddle :

HTML:

 
foo bar my_regex foo bar
​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​

JS:

 var str = jQuery("#my_div").html(); var regex = /(my_regex)/; jQuery("#my_div").html(str.replace(regex, '$1'));​​​​​​​​​ 

CSS:

 ​.red { color : red; }​