在做数据库HAMdb的时候发现需要在搜索结果标红搜索的关键字,这样看起来更加清晰。因此搜索Js和jQuery方法。最终找到一个最靠谱的,根据自己的情况改装之后如下:
1 2 3 4 5 6 7 8 |
<script> // mark the keywords var regExp = new RegExp("(>[^<]*?)"+"{{ keywords }}"+"([^>]*?<)","gmi"); $(".x_content").each(function(){ this.innerHTML=this.innerHTML.replace(regExp,"$1<font color='red'>"+"{{ keywords }}"+"</font>$2"); }) </script> |
这里要注意
1)如果单纯用
RegExp("{{ keywords }}","gmi")
作为正则去匹配的话,会出现匹配出许多不是你要的内容,比如搜索关键字为ta,那么会匹配出html代码中的
<table>,标红后变成<t<font color ="red" ab</font>le>, 使得整个页面乱码。因此这里得使用一些技巧,即在前后加上子规则用来限制想要的内容。这里每个小括号表示一个子表达式,左边的表达式的意思就是匹配最近一个以<标签,并且下一个规则可以匹配到keywords的。这种情况就限定了每个keywords周围不再有标签保留词被匹配。
2)这里还要理解一下这个$1,$2
RegExp.$1...$9
属性用于返回正则表达式模式中某个子表达式匹配的文本。
正则表达式中每个小括号内的部分表达式就是一个子表达式。
1 2 |
RegExp.$n n的值介于 [1, 9] 之间,表示第n个子表达式所匹配的文本内容。例如,RegExp.$1表示第一个子表达式所匹配的文本内容。 |
本文原始地址:https://www.ifyoung.net/javascript-mark-keywords.html
本站原创,转载请注明出处来自https://www.ifyoung.net/
暂无评论