2014-02-18 30 views
0

我試圖測試一個字符串使用jquery.validator和xregexp但我需要能夠動態設置一個標誌不區分大小寫。問題是我不知道如何使用param將xregexp的標誌發送給addmethod。這裏是我的addmethod目前的樣子:jquery驗證addmethod xregexp不區分大小寫

$.validator.addMethod(
    "regex", 
    function(value, element, regexp) { 
     var re = new XRegExp(regexp); 
     return this.optional(element) || re.test(value); 
    }, 
    "Please check your input." 
); 

這裏是我的電話吧:

webAddr: { 
    regex: '^(http(s)?:\/\/)?(([a-z]+[a-z0-9-\\.]*)\\.)+[a-z]{2,}$\\i', 
    maxlength: 256, 
    minlength: 4 
}, 

我的問題是\\我。我想包括,但根據你必須把它作爲使用這種格式的獨立PARAM文檔:

XRegExp(regexp, flags); 

我怎麼我通過,使用jquery.validator動態?

PS:我使用xregexp而不是其他的原因是因爲我需要在我的代碼中的其他地方使用真正的UTF-8支持,所以我儘量堅持使用它來幫助我更好地使用它。

回答

1

傳遞一個對象regex從標誌分隔的正則表達式正確:

webAddr: { 
    regex: {regex: '^(http(s)?:\/\/)?(([a-z]+[a-z0-9-\\.]*)\\.)+[a-z]{2,}$', 
      flags:'i'}, 
    maxlength: 256, 
    minlength: 4 
}, 

(我已經改變了的國旗'\\i''i',因爲我從來沒有聽說過'\\i'作爲標誌)

和修改您的驗證碼是這樣的:

$.validator.addMethod(
    "regex", 
    function(value, element, param) { 
     var re = new XRegExp(param.regex, param.flags); 
     return this.optional(element) || re.test(value); 
    }, 
    "Please check your input." 
); 

我沒有測試此代碼,以便觀看輸入錯別字。

+0

ty ty Louis,那是我缺少的一點知識,它工作得很完美。 ** \\我**應該說** /我**,但在我所有的嘗試找到解決方案,我忘了在我上面的例子中擺動回來。 – Vince