我有一个asp:regularexpressionvalidator,带有以下表达式来验证文件上传。
\.{1}x?html?$
Expresso告诉我它有效。下面简单的html测试页面显示它可以工作,但在我的应用程序中,在文件输入中加载一个html文件总是触发验证器?!?
任何人都有关于调试此控件的javascript的任何想法或提示吗?
谢谢, 萨姆
控件:
<asp:RegularExpressionValidator ID="validRegexHtmlOnly" runat="server" ControlToValidate="fileImportHTML"
ValidationExpression="\.{1}x?html?" ErrorMessage="The file must be an HTML document (.html, .htm, .xhtml)" Display="Dynamic" />
简单的测试页面:
<html>
<head>
<script type="text/javascript">
function validate(){
var txt = document.getElementById("txtInput").value;
alert(/\.{1}x?html?$/.test(txt));
}
</script>
</head>
<body>
<input type="file" id="txtInput" />
<input type="button" onclick="validate()" value="click me" />
</body>
</html>
答案 0 :(得分:0)
我最好的猜测是你在文件名的末尾有空格。不太确定在网页上会发生什么,但这是我唯一能想到的。
答案 1 :(得分:0)
我相信RegularExpressionValidator中的正则表达式应该匹配整个字符串,而不仅仅是结尾(或者开头,或者其他)。尝试将正则表达式更改为
.*\.x?html?
另一方面,{1}
没有做任何有用的事情,所以我删除了它。没有必要告诉正则表达式匹配一个的东西;这是默认行为。并且{1}
也不会阻止它匹配更多而不是它附加的东西。所有这一切都使你的正则表达式变得混乱。