我越來越意識到,正則表達式將被瀏覽器解釋的方式必定存在重大差異。
作爲一個例子,一個同事寫了這個正則表達式,以驗證所上載的文件將有一個PDF擴展名:正則表達式:瀏覽器之間的差異
^(([a-zA-Z]:)|(\\{2}\w+)\$?)(\\(\w[\w].*))(.pdf)$
這個工作在Internet Explorer和谷歌瀏覽器,但不在Firefox中工作。測試總是失敗,即使對於實際的PDF。所以我決定,多餘的東西是不相關的,它簡化爲:
^.+\.pdf$
,現在,它在Firefox正常工作,以及繼續在IE和Chrome的工作。
這是一個特定於asp:FileUpload和RegularExpressionValidator控件在ASP.NET中的怪癖,還是僅僅是由於不同的瀏覽器以不同的方式支持正則表達式?無論哪種方式,你遇到的後者有哪些?
正則表達式控制的所有東西都是文件名以'.pdf'結尾(並且可能需要不區分大小寫,因爲它似乎是Windows)。它不保證對文件的內容進行任何排序 - 不要混淆區別。病毒編寫者依賴於此。 – 2008-11-08 01:06:34
我不認爲這與問題有很大關係。我會肢體語言,並說能夠讀/寫正則表達式的「無人」足夠愚蠢,認爲文件擴展名驗證內容。它做的是幫助避免浪費服務器帶寬,存儲和上傳週期,甚至沒有命名爲正確的類型! – Grank 2008-11-08 03:34:31
再一次,你很混淆......如果你想通過避免上傳錯誤類型的文件來節省帶寬,你必須在瀏覽器端進行驗證......如果可能的話,在FF3中已經變得很難,就像我寫的那樣。 – PhiLho 2008-11-08 19:04:11