为什么不't这个正则表达式有效,并且在测试代码上运行良好
Why doesn't this regex work Even though it is valid and runs fine on test code
我已经在SO上发布了几篇与此相关的帖子,但这是另一篇适用于测试代码的帖子,而不使用启用了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, txt, doc, docx, png, gif, jpeg, jpg, zip, 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)$/);
从而产生正确的CCD_ 1。但当在正则表达式验证器中使用时,它甚至不会验证正确的文件名。
首先,请注意您没有逃脱这些点:
'.(pdf|txt|doc|docx|png|gif|jpeg|jpg|zip|rar)$
这不起作用,因为微软编写的脚本不是跨浏览器的,他们从来没有想过。
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=文件上传的值",每个浏览器的值不同。因此,即使找到了有效的匹配,最后一个返回语句也会返回false,因为在这种情况下,值永远不会等于匹配
相关文章:
- 为函数代码编写测试
- 为什么不是'我的函数在解析云代码中工作吗?当我在Angular和Express中测试时,它是有效的
- 我的CSS/Javascript下拉菜单测试代码出了什么问题
- 有人能解释一下evaluate()和dragAndDrop()在下面的角度测试代码中调用了什么吗
- 为es6传输的测试代码
- 在单元测试中实现逻辑,以缩短语法并提高测试代码的可重用性
- AngularJS Jasmine 编写测试代码
- Amazon Cloud (AWS) 中的代码-测试-代码周期
- JavaScript基准测试代码冻结了浏览器
- AngularJS教程测试代码没有'我无法使用CoffeeScript代码
- 这个Jasmine测试代码是如何工作的
- 重用mocha测试代码
- 在jasmine测试代码中未调用回调函数
- 使用通配符路径测试代码覆盖率
- RequireJS——从优化的构建中省略测试代码
- 测试代码片段时出现奇怪的JSLint错误
- 我正在学习JavaScript.我的测试代码有什么问题?
- visual studio 2015 -在MSBuild中集成javascript单元测试代码覆盖
- 为什么不't这个正则表达式有效,并且在测试代码上运行良好
- Firebase 3.0 JavaScript 测试代码中的用户身份验证