我们有一个保留关键字列表,我们不希望我们的客户能够使用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之一的关键字时,我们确实遇到了问题。因此,如果提交了“混合”,则将其标记为保留字“结束”。
有没有一种方法可以在考虑整个关键字的情况下执行绝对搜索?
我一直在尝试编辑和使用代码,但是无法正常工作。
任何建议将不胜感激。
谢谢!
答案 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
}