Regex 如何仅在ColdFusion CFForm中验证字符?

Regex 如何仅在ColdFusion CFForm中验证字符?,regex,validation,coldfusion,cfform,cfinput,Regex,Validation,Coldfusion,Cfform,Cfinput,我有一个非常简单的cfform,只有一个表单字段: <cfform action="asdf.cfm" method="post"> <cfinput name="fieldName" type="text" size="20" maxlength="20" required="yes" validate="regex" pattern="[A-Za-z]" message="Only characters are allowed." /> <input t

我有一个非常简单的cfform,只有一个表单字段:

<cfform action="asdf.cfm" method="post">
  <cfinput name="fieldName" type="text" size="20" maxlength="20" required="yes" validate="regex" pattern="[A-Za-z]" message="Only characters are allowed." />
  <input type="submit" name="btnSubmit" value="check" />
</cfform>

理论上,这将只允许A-Z和A-Z在任何组合中,并且其中必须包含一些内容

实际上,我可以输入“a”,javascript验证不会有任何问题。既然“空格”字符不在A-Z和A-Z中,发生了什么

谢谢!
Chris

您缺少字符串的开头和结尾锚定:

^[A-Za-z]$
或者,更有可能:

^[A-Za-z]{1,20}$
您的样本已修改:

<cfform action="asdf.cfm" method="post">
  <cfinput name="fieldName" type="text" size="20" maxlength="20" required="yes" validate="regex" pattern="^[A-Za-z]{1,20}$" message="Only characters are allowed." />
  <input type="submit" name="btnSubmit" value="check" />
</cfform>


如果没有这些锚,正则表达式只需要在任何地方匹配,而不需要完全匹配。

我个人会避免使用内置的coldfusion javascript。如果您自己滚动,您将拥有更多的控制权,它将使您能够以警报框以外的其他方式显示错误

<script>
function checkit() {
    var v = document.getElementById("text1").value;
    if(!v.match(/^[a-zA-Z]+$/)) {
        alert(v + ' contains invalid characters');
        return false;
    }
    return true;
}
</script>
<form onsubmit="return checkit()">
<input type="text" id="text1">
<input type="submit">
</form>

函数checkit(){
var v=document.getElementById(“text1”).value;
如果(!v.match(/^[a-zA-Z]+$/){
警报(v+'包含无效字符');
返回false;
}
返回true;
}

函数checkit(){
var v=document.getElementById(“text1”).value;
如果(!v.match(/^[a-zA-Z\\\\.\\\]+$/){
警报(v+'包含无效字符');
返回false;
}
返回true;
}
这里也有进入和指向的可能,但我必须如何重新开始


当然谢谢你的帮助,你帮了我这么多

在我寻找自己的解决方案时,偶然发现了这篇文章。需要一种非侵入性的方式来防止人们在一个字段中输入任何数字,而在其他字段中只输入字母、数字或空格。我不能用pattern=“9999”来表示数字,因为它不是必填字段,如果人们通过该字段进行制表,就会被“吼叫”。同样,无法对字母/数字字段使用pattern=“xxx”,因为我还需要允许空格

从本文中跳出来,使用以前的程序员为该客户机开发的javascript,我想出了这些漂亮的处理程序,我想我会与大家分享,以防其他人需要这个优雅的解决方案,也因为有时我会忘记并能够再次找到它

在.js文件中包含或包含在标记中:

    function numChecker(e)
    {
      if (!e.value.match(/^[0-9]+$/))
      {
        e.value = e.value.substring(0.e.value.length -1 );
        e.focus();
        return false;
      }
      return true;
    }
    function charChecker(e)
    {
      if (!e.value.match(/^[a-zA-Z0-9\ ]+$/))
      {
        e.value = e.value.substring(0.e.value.length-1);
        e.focus();
        return false;
      }
      return true;
    }
然后,您的输入或cfinput字段的属性中将包含
OnKeyUp=“numChecker(this)”
OnKeyUp=“charChecker(this)”


当人们输入时,如果他们输入了一个无效的字符,这个脚本将生效并简单地删除这个坏字符。无需单击其他按钮,也无需关闭警报。

谢谢您的选择(和示例代码)。现在,对我们来说,警报框已经足够了。对于其他正在寻找更好的验证方法的人,我推荐jquery的验证功能。简单而不引人注目,但功能强大且可定制。我支持jquery的建议。我没有提到它,因为javascript已经超出了问题的范围,我希望它保持简单。
    function numChecker(e)
    {
      if (!e.value.match(/^[0-9]+$/))
      {
        e.value = e.value.substring(0.e.value.length -1 );
        e.focus();
        return false;
      }
      return true;
    }
    function charChecker(e)
    {
      if (!e.value.match(/^[a-zA-Z0-9\ ]+$/))
      {
        e.value = e.value.substring(0.e.value.length-1);
        e.focus();
        return false;
      }
      return true;
    }