2010-10-24 29 views
0

我需要驗證HTML表單中的輸入文件是否爲圖像,我在HTML頁面中做了以下代碼,但不起作用...使用正則表達式驗證表單上的輸入文件名稱

script type="text/javascript" language="javascript" 
    function valida(f){ 
     var campo = f.immagine.value; 
     //window.alert(campo); 
     var er = /^+.[\.]([jpg]|[gif]|[png])$/; 
     if(er.test(campo)) { 
      windows.alert("espressione regolare corretta"); 
      return true; 
     } 
     else { 
      windows.alert("espressione regolare non corretta"); 
      f.immagine.style = "color:#F00"; 
      return false; 
     } 
    } 
/script 

... HTML代碼...

form onsubmit="return valida(this)" action="inserisci_articolo1.php" enctype="multipart/form-data" method="post"> 
    input type="file" name="immagine" id="immagine"/
/form 
+0

你的問題是什麼?什麼不工作? – 2010-10-24 11:18:25

+0

'.jpeg'呢?或'.PNG'? – Quentin 2010-10-24 11:19:50

+0

當我在窗體的提交按鈕上點擊不正確的文件(例如txt文件)時,函數必須「阻止」鏈接並將文件名的文本以紅色着色,但似乎沒有進入在「if」和「else」塊中... – user485543 2010-10-24 11:25:03

回答

4
var er = /^.+\.(jpe?g|gif|png)$/i; 

你去那裏。問題是你把.+放在開頭的順序是錯誤的,不應該封裝jpg/gif/png和[]中的點。現在正則表達式應該適用於*.jp(e)g,*.gif*.png。我還在列表中添加了jpeg,並使正則表達式不區分大小寫。

另外,還要注意它的windowwindows,並f.immagine.style是一個對象,而不是一個字符串,因此使用這樣的f.immagine.style.color = "#f00";

此外,您必須確保用戶輸入的圖像,因爲任何與文件修改後的擴展名將通過此測試。

+0

'jpe?g'爲您節省了一個輪換。 – 2010-10-24 11:51:45

+0

@Tim Pietzcker你是對的。固定 – 2010-10-24 17:11:17