2014-05-07 80 views
0

我有一個外部JS文件來驗證表單。這一切似乎都在起作用。不過,我添加了一個正則表達式來驗證密碼字段。只要我這樣做,並重新加載頁面,我以前的任何驗證工作都無法進行。即使是空格式,它也不會提交。我測試了它,當我包括變量時正則表達式JavaScript問題

var chk_name = ^(?=.{6,})(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9]).*$; 

它不會很好,它提交。但是一旦我把這個變量取出,它就開始工作,並再次檢查字段中的字符。我試着把這個變量放在函數中,並且也在函數之外,但是在這兩種情況下,它都停止了頁面的正確驗證。我給一些例子:

這工作沒有正則表達式:

function validation() { 
    var x=document.forms[0]["firstname"].value; 
     if (x==null || x=="") { 
      alert("First name must be filled out"); 
      return false; 
     } 

這不起作用(即形式與沒有字段甚至提交填寫)

var chk_name = ^(?=.{6,})(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9]).*$; 

function validation() { 
    var x=document.forms[0]["firstname"].value; 
     if (x==null || x=="") { 
      alert("First name must be filled out"); 
      return false; 
     } 
var x=document.forms[0]["password"].value; 
     if(x==null || x==""){ 
      alert("Choose a password at least 6 characters long including 1 upper case letter, 1 lower case letter and 1 number"); 
      return false; 
     } else if(!chk_name.test(x)){ 
      alert("Choose a password at least 6 characters long including 1 upper case letter, 1 lower case letter and 1 number"); 
      return false; 
     } 

這也沒有按「T工作:

function validation() { 
    var x=document.forms[0]["firstname"].value; 
     if (x==null || x=="") { 
      alert("First name must be filled out"); 
      return false; 
     } 
var x=document.forms[0]["password"].value; 
var chk_name = ^(?=.{6,})(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9]).*$; 
     if(x==null || x==""){ 
      alert("Choose a password at least 6 characters long including 1 upper case letter, 1 lower case letter and 1 number"); 
      return false; 
     } else if(!chk_name.test(x)){ 
      alert("Choose a password at least 6 characters long including 1 upper case letter, 1 lower case letter and 1 number"); 
      return false; 
     } 

回答

2

var chk_name = ^(?=.{6,})(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9]).*$;

應該是:

var chk_name = /^(?=.{6,})(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9]).*$/; 

字面正則表達式的語法是:

/pattern/flags 

您還可以使用正則表達式的構造函數:

new RegExp("pattern","flags"); 
+0

也不會覺得傻..謝謝你的工作:) –

+0

很高興它幫助你;) –

+0

有一點需要注意,你可以用文字符號'/ [az] /'或通過構造函數'new RegExp('[az]')指定RegExp '改性劑')'。決定使用哪一個是基於你對模式的瞭解。如果你知道它是不斷使用'literal',如果模式將是動態的使用'constructor'。 –