2010-10-24 31 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