在某個元素中,我需要選擇與某個正則表達式匹配的不同字符串,並用標籤包裝它們。我怎樣才能做到這一點 ?jQuery:包裝匹配正則表達式的字符串
我想:
var str = jQuery("#my_div").html();
var regex = "\([a-z]{2}\)";
jQuery("#my_div").html(str.replace(regex, "<span>$1</span>"));
..但這個包裝整個元素,而不是元素中選擇的字符串。
在某個元素中,我需要選擇與某個正則表達式匹配的不同字符串,並用標籤包裝它們。我怎樣才能做到這一點 ?jQuery:包裝匹配正則表達式的字符串
我想:
var str = jQuery("#my_div").html();
var regex = "\([a-z]{2}\)";
jQuery("#my_div").html(str.replace(regex, "<span>$1</span>"));
..但這個包裝整個元素,而不是元素中選擇的字符串。
你的榜樣的問題是你有沒有捕獲組,更改正則表達式爲(\([a-z]{2}\))
這裏是工作的一個例子正則表達式中的HTML代替:http://jsfiddle.net/gibble/NYVWg/
<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);
你的代碼應該工作,因爲你的正則表達式中有一個子表達式。看看這個jsfiddle:
HTML:
<div id="my_div">foo bar my_regex foo bar</div>
JS:
var str = jQuery("#my_div").html();
var regex = /(my_regex)/;
jQuery("#my_div").html(str.replace(regex, '<span class="red">$1</span>'));
CSS:
.red {
color : red;
}
我們需要看到你的正則表達式,以及一些示例HTML能夠幫助你。 1美元的價值可能不是你認爲的價值。 – CaffGeek
好的。我相應編輯。 – drake035
我更新了我的答案,但問題是你的正則表達式沒有捕獲'()',只是在整個事物中添加一些括號,所以它是'(\([az] {2} \))' – CaffGeek