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

jQuery:包装与正则表达式匹配的字符串,jquery,regex,Jquery,Regex,在某个元素中,我需要选择与某个正则表达式匹配的不同字符串,并用标记将它们包装起来。我该怎么做 我试过: var str = jQuery("#my_div").html(); var regex = "\([a-z]{2}\)"; jQuery("#my_div").html(str.replace(regex, "<span>$1</span>")); var str=jQuery(“#my_div”).html(); var regex=“\([a-z]{2}\)”

在某个元素中,我需要选择与某个正则表达式匹配的不同字符串,并用标记将它们包装起来。我该怎么做

我试过:

var str = jQuery("#my_div").html();
var regex = "\([a-z]{2}\)";
jQuery("#my_div").html(str.replace(regex, "<span>$1</span>"));
var str=jQuery(“#my_div”).html();
var regex=“\([a-z]{2}\)”;
jQuery(“#my#u div”).html(str.replace(regex,“$1”);

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

如果正则表达式中有子表达式,那么代码应该可以工作。看看这个:

HTML:


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

下面是一个在html中工作的正则表达式替换示例:

span.highlight{color:purple;}​
这是一些文字这是一些文字​
var oldHtml=$('#test').html();
var newHtml=oldHtml.replace(/(\([a-z]{2}\)/g,“$1”);
$('#test').html(newHtml);​

我们需要查看您的正则表达式和一些HTML示例,以便能够帮助您。很可能$1的值不是您所认为的值。我更新了我的答案,但问题是您的正则表达式没有捕获
()
,只需在整个内容周围添加一些括号,因此它是
(\([a-z]{2}\)
,此代码有问题。如果您添加更多模式实例(例如:“this(is)some text this(is)some text this(is)some text this(is)some text”),它将只选择第一个实例@drake035,通过在正则表达式中添加字母g轻松修复(对于全局)
​<div id="my_div">foo bar my_regex foo bar</div>​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​
var str = jQuery("#my_div").html();
var regex = /(my_regex)/;
jQuery("#my_div").html(str.replace(regex, '<span class="red">$1</span>'));​​​​​​​​​
​.red {
    color : red;
}​
<style>span.highlight { color: purple; }​</style>
<body>bla bla <div id="test">this (is) some text this (is) some text</div> bla bla​<body>

var oldHtml = $('#test').html();
var newHtml = oldHtml.replace(/(\([a-z]{2}\))/g,"<span class='highlight'>$1</span>");
$('#test').html(newHtml);​