为什么此正则表达式不起作用,即使它有效并且可以在测试代码上正常运行

问题描述

|| 我已经在此处发布了与之相关的几篇文章,但这是另一篇适用于测试代码的文章,不适用于启用clientScript的正则表达式验证器控件,我希望在上传时在客户端验证fileUpload。
<asp:RegularExpressionValidator id=\"rgvFile\" runat=\"server\" font-bold=\"true\" errormessage=\"Only pdf,txt,doc,docx,png,gif,jpeg,jpg,zip,rar files allowed\"
cssclass=\"rgvfile\" enableclientscript=\"true\" display=\"Dynamic\" controltovalidate=\"fileUpload\"
validationexpression=\"(.pdf|.txt|.doc|.docx|.png|.gif|.jpeg|.jpg|.zip|.rar)$\"
text=\"Only pdf,rar files allowed\" tooltip=\"Only certain files allowed. Filename must be within 30 letters and cannot contains invalid characters\"></asp:RegularExpressionValidator>
验证表达式所做的是检查有效的文件扩展名[忘记扩展名伪造,更改文件扩展名和完成上传。]。我在regExHero上面测试过,regexBudy全部验证文件。我也像下面一样测试了它。
\"domreference.pdf\".match(/(.pdf|.txt|.doc|.docx|.png|.gif|.jpeg|.jpg|.zip|.rar)$/);
产生
[.pdf,.pdf]
是正确的。但是,当在正则表达式验证器中使用时,它甚至不会验证正确的文件名。     

解决方法

        首先,请注意,您没有逃脱这些点:
\\.(pdf|txt|doc|docx|png|gif|jpeg|jpg|zip|rar)$
    ,        这是行不通的,因为Microsoft编写的脚本不是跨浏览器的,而且他们也从未使用过。
function RegularExpressionValidatorEvaluateIsValid(val) {
    var value = ValidatorGetValue(val.controltovalidate);
    if (ValidatorTrim(value).length == 0)
        return true;
    var rx = new RegExp(val.validationexpression);
    var matches = rx.exec(value);
    return (matches != null && value == matches[0]);
}
其中,“ val = FileUpload \的值”,每个浏览器均不同。因此,即使找到有效的匹配,最后的return语句也将返回false,因为在这种情况下value永远不会等于匹配     

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...