CFINPUT - 如何从输入值中排除O,o,I,i

时间:2015-03-02 16:02:11

标签: coldfusion

如何在Coldfusion中强制使用字母数字字符格式排除O,o,I,i?面具显然不起作用。

从评论中更新: 以下示例是如何强制使用字符和数字的格式,但它允许O& I.我想排除这两个。

<cfinput type="text" name="newPart" mask="EB-9999-XX-999999" /> 

1 个答案:

答案 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的优秀信息。还有很多其他来源。值得一试。