Javascript 突出显示搜索结果字符串大小写问题
我使用的是一个cfscript,它接收字符串、搜索词和可选的突出显示选项,并返回突出显示搜索词的字符串:Javascript 突出显示搜索结果字符串大小写问题,javascript,regex,coldfusion,highlight,cfml,Javascript,Regex,Coldfusion,Highlight,Cfml,我使用的是一个cfscript,它接收字符串、搜索词和可选的突出显示选项,并返回突出显示搜索词的字符串: <cfscript> string function highlightKeywords(required string str, required string keywords, struct highlight){ var keyword = ""; var replacement = ""; param name="highlight.t
<cfscript>
string function highlightKeywords(required string str, required string keywords, struct highlight){
var keyword = "";
var replacement = "";
param name="highlight.tag" default="span";
param name="highlight.attributes" default="style='color:rgb(255,102,0);'";
for (var index=1; index <= listLen( arguments.keywords, " " ); index++){
keyword = ReReplace(listGetAt(arguments.keywords, index, " "), "\(|\)", "", "all" );
replacement = "<#highlight.tag#";
if (len(highlight.attributes)){
replacement &= " #highlight.attributes#";
}
replacement &= ">" & keyword & "</#highlight.tag#>";
arguments.str = reReplaceNoCase( arguments.str, "\b#keyword#\b", replacement, "all" );
}
return arguments.str;
}
</cfscript>
字符串函数highlightKeywords(必需的字符串str、必需的字符串关键字、结构高亮显示){
var关键字=”;
var替换=”;
param name=“highlight.tag”default=“span”;
param name=“highlight.attributes”default=“style='color:rgb(255102,0);”;
对于(var index=1;index,您可以使用“\b(#keyword#)\b”
(注意捕获括号)捕获关键字,并替换为\1
对该组1值的反向引用,以实际替换为关键字的匹配变量
使用
replacement&=“>”&关键字&“;
=>replacement&=”>$&”
@WiktorStribiżew我试过了,但是没有用。突出显示的单词变成了“$&”。我得到了“这是$&测试”@WiktorStribiżew我很抱歉,但我不明白你的意思。你能添加一个解决方案吗?看起来CF regex不支持$n
,我不确定\0
是否有效。因此,你需要包装keyword,然后在替换模式中使用\1
反向引用。尝试替换&=“>\1”
,然后重新替换nocase(arguments.str,“\b(#关键字#)\b”,替换,“全部”)
replacement &= ">\1</#highlight.tag#>"
arguments.str = reReplaceNoCase( arguments.str, "\b(#keyword#)\b", replacement, "all" )