2013-04-16 50 views
1

表單驗證正則表達式和DOM: 在表單驗證中實現正則表達式的最佳方式是什麼?表單驗證正則表達式和DOM:什麼是在表單驗證中實現正則表達式的最佳方式

即時通訊目前這樣做,但是當我確認它不匹配的值:

if(this.value.length > 0 && this.value === /^[a-zA-Z]+$/); 

預先感謝您!

+0

對不起,不簡明我真的是新來的JavaScript和堆棧溢出,我的功能檢查onBlur如果表單輸入匹配的長度和字符匹配正則表達式的名字。 – iplayjumanji2

回答

1

您需要使用test()方法。

var patt = /^[a-zA-Z]+$/; //define your RegEx 

    if(this.value.length > 0 && patt.test(this.value)){ //check if this.value is longer than one character AND matches your RegEx 
      //do something 
    }; 

http://www.w3schools.com/jsref/jsref_regexp_test.asp

+0

我嘗試使用match(),但是一旦我啓動我的函數,輸入仍然無法匹配RegEx。當它只是 (this.value.length> 0)我有成功,但是當我嘗試匹配時,我得到錯誤。 – iplayjumanji2

+0

我已經更新了答案。 'test()'方法將返回true或false。所以在這種情況下,如果它匹配你的正則表達式,if條件將是真實的,並且你的代碼應該執行。我以前用'match()'方法的回答是錯誤的,因爲匹配會返回一個匹配值作爲數組,而不是布爾值,所以它不會起作用... –

+0

非常感謝,您的編輯幫助了很多!我會支持你的投票,但是我還沒有足夠的聲望。 – iplayjumanji2

0

爲什麼你的代碼不mathing任何價值? 因爲您使用了類型相等性測試===。在動態類型的JavaScript世界中,它規定:如果這些值相同,則測試這些值的類型,然後在相同的情況下測試值。 所以,當你試圖在一些文本框的這樣的價值觀,這是字符串

typeof('a') 

這個代碼將產生「串」來測試,因爲「A」確實是一個字符串。但是:

typeof(/^[a-zA-Z]+$/) 

這將產生「對象」。正如你看到的,當你嘗試比較字符串到對象時,按類型相等性測試將總是返回false。

這是爲了測試對象及其值的相等性。對於正則表達式,請參閱'bam'回答。