Osc*_*son 6 html javascript regex jquery
如果我有一个字符串:
hey <a href="#user">user</a>, what are you doing?
Run Code Online (Sandbox Code Playgroud)
如何,正则表达式可以说:寻找user,但不是内部<或>字符?因此匹配将抓住用户之间<a></a>但不是内部的用户href
我希望这适用于任何标签,所以它不重要什么标签.
==更新==
为什么我不能使用.text()或innerText是因为这用于突出显示结果很像浏览器中的本机cmd/ctrl + f功能,我不想丢失格式.例如,如果我在strong这里搜索:
Some <strong>strong</strong> text.
Run Code Online (Sandbox Code Playgroud)
如果我使用.text()它将返回"一些强文本",然后我将strong包含一个<span>具有样式类,但现在当我回去并尝试将其插入DOM时,它将丢失<strong>标签.
如果您打算html()再次使用HTML替换,那么您将丢失可能绑定到内部元素及其内容的所有事件处理程序data(正如我在评论中所述).
每当您将元素的内容设置为HTML字符串时,您就是在创建新元素.
将递归地应用于每个文本节点可能更好.就像是:
$.fn.highlight = function(word) {
var pattern = new RegExp(word, 'g'),
repl = '<span class="high">' + word + '</span>';
this.each(function() {
$(this).contents().each(function() {
if(this.nodeType === 3 && pattern.test(this.nodeValue)) {
$(this).replaceWith(this.nodeValue.replace(pattern, repl));
}
else if(!$(this).hasClass('high')) {
$(this).highlight(word);
}
});
});
return this;
};
Run Code Online (Sandbox Code Playgroud)
很可能这不是很有效率.
小智 -1
此代码将从 sting 中删除所有标签
var s = 'hey <a href="#user">user</a>, what are you doing?';
s = s.replace(/<[^<>]+>/g,'');
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1796 次 |
| 最近记录: |