尝试使用REFind查找绝对字符串

时间:2019-07-17 11:24:07

标签: coldfusion

我们有一个保留关键字列表,我们不希望我们的客户能够使用in out系统。因此,我们使用REFind执行搜索。

代码如下:

<cfset reservedKeywords = "stop,end,quit,cancel,help,test">
<cfset foundArray = REFind("(?i)(" & ListChangeDelims(reservedKeywords, "|") & ")"
                       , form.keyword, 1, true)>
<cfif foundArray.pos[1] gt 0>
    <cfoutput>
        <script language="JavaScript">
            alert('Keyword "#mid(form.keyword, foundArray.pos[1], foundArray.len[1])#" has been reserved.');
            history.go(-1);
        </script>
    </cfoutput>
   <cfabort>
</cfif>

所以一切工作都很好。。。。但是,当搜索包含保留字IN之一的关键字时,我们确实遇到了问题。因此,如果提交了“混合”,则将其标记为保留字“结束”。

有没有一种方法可以在考虑整个关键字的情况下执行绝对搜索?

我一直在尝试编辑和使用代码,但是无法正常工作。

任何建议将不胜感激。

谢谢!

1 个答案:

答案 0 :(得分:0)

使用listFindNoCase()而不是REFind()。

您当前检查的方式是列表中的元素之一是否与form.keyword匹配-这就是为什么'blended'在不应该被标记为'reserved'的原因-但是,您应该检查是否为form。关键字与列表中的所有项目匹配-细微但重要的区别。

reservedWords = "stop,end,quit,cancel,help,test";
reservedWordUsed = listFindNoCase( reservedWords, form.keyword );
if( reserveWordUsed ){
    // do the JS stuff here
}