如何在Coldfusion中强制使用字母数字字符格式排除O,o,I,i?面具显然不起作用。
从评论中更新: 以下示例是如何强制使用字符和数字的格式,但它允许O& I.我想排除这两个。
<cfinput type="text" name="newPart" mask="EB-9999-XX-999999" />
答案 0 :(得分:0)
Leigh和Dan都是正确的。需要更多信息,您最终可能会得到一些RegEx。
最终目标是什么?您是否希望用户不要输入任何看似零或一的字符(我的假设)?这可能也应该包括L.自己0和1怎么样?您是否要在输入表单字段或表单提交后更改这些字符?如果您在提交之前屏蔽它们,您将如何让用户知道他们提交的内容与他们输入的内容不同?
根据我上面的假设,你可以先用Javascript在表单字段中替换它们。
<input name="formStr" type='text'
onKeyUp="this.value = this.value.replace(/o/ig,'0')
.replace(/l|i/ig,'1').replace(/[^0-9a-z]/ig,'')
">
然后在使用它之前替换该条目。我一直都喜欢使用Java String函数进行字符串操作。它非常快。
inStr = FORM.formStr.replaceAll("(?i)[o]","0")
.replaceAll("(?i)[il]","1")
.replaceAll("(?i)[^0-9a-z]","")
;
您不想只在表单字段中进行屏蔽。有人仍然可以右键单击&gt;&gt;粘贴到该字段并提交包含无效字符的表单。 Ctrl-V粘贴确实涉及onKeyUp事件,因此文本将以这种方式被屏蔽,但Java replaceAll()会在提交端处理它。
或者如果用空字符串替换所有上述字符:
onKeyUp="this.value=this.value.replace(/[^0-9a-hjkmnp-z]/ig,'')"
和
inStr2 = FORM.formStr.replaceAll("(?i)[^0-9a-hjkmnp-z]","");
但同样,如果不了解更多关于如何使用此输入的信息,很难给出准确的帮助。
注意:onKeyUp适用于Chrome和IE,但不适用于Firefox。奇。自从我写了JS之后已经有一段时间了,我还没有深入挖掘这个,所以我不知道我错过了什么让它失败了。也许其他人可以解雇。
另外一个FYI:Ben Nadel有很多关于使用RegEx的优秀信息。还有很多其他来源。值得一试。