使用JavaScript,我用包含该词的<span>
标签替换所有出现的单词。这就是我现在正在做的事情:
regEx = new RegExp('\\b(?![^<>]*>)'+word+'\\b', 'gi');
context.innerHTML = context.innerHTML.replace(regEx, '<span class="reference">'+word+'</span>');
哪个有效,但有一个问题:说我有word = 'mass'
,在文中我有Mass
:因为搜索是不区分大小写的,它需要它,它会匹配它,但它会失去首都M
,这是不好的
我可以使用regEx中匹配的字符串而不是我正在寻找的单词字符串吗?我知道可以使用preg_replace
使用$0
等在PHP中进行,但是我如何在JS中执行此操作?
谢谢!
答案 0 :(得分:2)
你应该做这样的事情
regEx = new RegExp('\\b(?![^<>]*>)('+word+')\\b', 'gi');
context.innerHTML = context.innerHTML.replace(regEx, '<span class="reference">$1</span>');
答案 1 :(得分:1)
使用()
抓住该字词,然后使用$1
获取该字词
在这里阅读http://msdn.microsoft.com/en-us/library/ie/24th3sah(v=vs.94).aspx
像这样:
regEx = new RegExp('\\b(?![^<>]*>)('+word+')\\b', 'gi');
context.innerHTML = context.innerHTML.replace(regEx, '<span class="reference">$1</span>');
答案 2 :(得分:1)
JS中的情况大致相同。只需添加捕获组的括号:
var regEx = new RegExp('\\b(?![^<>]*>)('+word+')\\b', 'gi');
然后它可以按您的喜好工作(但请注意$0
是整个字符串,因此您需要$1
):
"a patriot from Boston, Mass was found...".replace(regEx, "<span class='reference'>$0</span>")
//=> "a patriot from Boston, <span class='reference'>Mass</span> was found..."
"difference between mass and weight is...".replace(regEx, "<span class='reference'>$1</span>")
//=> "difference between <span class='reference'>mass</span> and weight is..."
MDN 可能是最好的参考。