我越来越意识到浏览器解释正则表达式的方式肯定存在重大差异。
例如,一位同事编写了这个正则表达式,以验证上传的文件是否具有 PDF 扩展名:
^(([a-zA-Z]:)|(\\{2}\w+)\$?)(\\(\w[\w].*))(.pdf)$
这适用于 Internet Explorer 和 Google Chrome,但不适用于 Firefox。测试总是失败,即使是实际的 PDF。所以我认为额外的东西是无关紧要的,并将其简化为:
^.+\.pdf$
现在它在 Firefox 中运行良好,并且继续在 IE 和 Chrome 中运行。
这是 ASP.NET 中的 asp:FileUpload 和 RegularExpressionValidator 控件特有的怪癖,还是仅仅是因为不同的浏览器以不同的方式支持正则表达式?无论哪种方式,您遇到过哪些后者?