Javascript 突出显示搜索结果字符串大小写问题

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,它接收字符串、搜索词和可选的突出显示选项,并返回突出显示搜索词的字符串:

<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" )