我有一个非常简单的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验证没有任何问题。既然“space”字符既不在a-z中,也不在A-Z中,这是怎么回事?
谢谢!克里斯
发布于 2009-07-07 16:28:17
您缺少字符串开头和字符串结尾锚点:
^[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>没有这些锚点,正则表达式只需要在任何地方匹配,它不需要完全匹配。
发布于 2009-07-07 16:35:44
就我个人而言,我会避免使用内置的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>发布于 2010-11-24 17:06:11
<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>这里也是可能的入口和点,但是我必须怎么做才能重获。
当然,谢谢大家的帮助,你帮了这么多忙。
https://stackoverflow.com/questions/1093312
复制相似问题