正则比较难,用dom容易一些。。<div><a href="#" title="学生" >asdasdasdasd<b>学生</b>asdadasdasdasdasd</a></div> <div>学生啊</div> <script> function parentsNotA(o) { do { if (o.tagName == 'A') return false; } while (o = o.parentNode); return true } window.onload = function () { var range, keyword = '学生' if (document.createRange) range = document.createRange(); else range = document.body.createTextRange(); if (range.findText) {//ie while (range.findText(keyword)) { if (parentsNotA(range.parentElement())) range.pasteHTML('<a href="#">' + keyword + '</a>'); else range.move('character', keyword.length) } } else if (window.find) {//标准浏览器 var s, n; s = window.getSelection(); while (window.find(keyword)) { if (parentsNotA(s.focusNode)) { var a = document.createElement("a"); a.href = '#'; s.getRangeAt(0).surroundContents(a); } } s.removeAllRanges() } alert(document.body.innerHTML) } </script>
var html = '如果是有学生<a href="#" title="学生" >asdasdasdasd学生asdadasdasdasdasd</a>学生'; var a = html.replace(/(?!<[^>]*)(学生)(?![^<]*>)/gi,"<a href='#'>$1</a>>"); alert(a);
这种情况存在的话 就变成这样了 <a href="#" title="<a href="#">$1</a>" >asdasdasdasd学生asdadasdasdasdasd</a>
<div>学生啊</div>
<script>
function parentsNotA(o) { do { if (o.tagName == 'A') return false; } while (o = o.parentNode); return true }
window.onload = function () {
var range, keyword = '学生'
if (document.createRange) range = document.createRange();
else range = document.body.createTextRange();
if (range.findText) {//ie
while (range.findText(keyword)) {
if (parentsNotA(range.parentElement())) range.pasteHTML('<a href="#">' + keyword + '</a>');
else range.move('character', keyword.length)
}
} else if (window.find) {//标准浏览器
var s, n;
s = window.getSelection();
while (window.find(keyword)) {
if (parentsNotA(s.focusNode)) {
var a = document.createElement("a");
a.href = '#';
s.getRangeAt(0).surroundContents(a);
}
}
s.removeAllRanges()
}
alert(document.body.innerHTML)
}
</script>
var a = html.replace(/(?!<[^>]*)(学生)(?![^<]*>)/gi,"<a href='#'>$1</a>>");
alert(a);