2015-02-09 96 views
0

我正在處理jquery validate插件的添加方法,它必須檢測是否輸入了3個或更多個連續的相同字符,並提示一條消息。 爲此,我需要否定一個正則表達式。這是我的方法:正則表達式和jQuery驗證。否定表達式

$.validator.addMethod("pwcheckconsecchars", function (value) { 
    return /(.)\1\1/.test(value) // does not contain 3 consecutive identical chars 
}, "The password must not contain 3 consecutive identical characters"); 

上面的代碼示出了當已經輸入沒有連續的相同字符的錯誤信息,所以我需要否定表達/(.)\1\1/所以已經取得的錯誤時,它纔會出現。

這顯示的jsfiddle我的代碼至今:http://jsfiddle.net/jj50u5nd/3/

感謝

+5

怎麼樣'返回/ \ 1 \ 1 /。測試(值);' – Pointy 2015-02-09 17:47:01

+0

關於你的jsfiddle,你應該將所有這些不同的正則表達式進一個!(。) 。沒有必要有五個自定義方法!您甚至可以將最小/最大長度規則納入其中,一次替換七條規則。 – Sparky 2015-02-09 17:50:04

+0

@Sparky。驗證規則是根據我無法修改的業務需求設置的。問題是我需要爲每個未通過的規則顯示自定義消息。只用一種收集所有規則的方法是否可能? – Adorablepolak 2015-02-09 18:15:38

回答

1

正如評論指出的尖尖的,用!字符否定或反轉的結果。

$.validator.addMethod("pwcheckconsecchars", function (value) { 
    return !/(.)\1\1/.test(value); // does not contain 3 consecutive identical chars 
}, "The password must not contain 3 consecutive identical characters"); 

輸入「AAAa1」到下面的演示,它滿足足夠的其他規則來證明這種特殊的方法工作。

DEMO:http://jsfiddle.net/jj50u5nd/6/

+0

太好了。再次感謝你們。 :) – Adorablepolak 2015-02-09 20:30:45