「\ 「在javascript中字符被認爲是轉義字符,應該加倍,所以它被字面解釋爲」\「字符。引號也必須逃脫,儘管我看到你沒有在場。
應用到你的正則表達式,這將是:
\\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\b
在你的代碼的情況下,這將是那麼:
jQuery("#Email").validate({
expression: "if (VAL.match(/^\\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\b$/)) return true; else return false;",
message: "Should be a valid Email id"
});
請注意,我離開了「^」開頭和「$」,這意味着你想讓整個字符串與我假設的正則表達式匹配。如果不是這種情況,你應該刪除它們。我沒有測試過這個正則表達式是否符合你的要求,但如果不符合,你應該能夠應用上面寫的規則將它插入到上面寫的代碼中。
編輯:如果你希望做的更先進的檢查,如確定用戶正在嘗試的IP,但失敗了,或者如果它完全是另一回事,那麼你可以如下修改表達式代碼:
function isValidInput(str) {
if (str.match(/^\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b$/)) {
return true;
} else if (str.match(/[0-9]+(\.[0-9]+){2,}/)) {
return false;
} else {
return true;
}
}
jQuery("#Email").validate({
expression: "isValidInput(VAL)",
message: "Should be a valid Email id"
});
請注意,表達式現在調用現有函數「isValidInput」,因此代碼不再是eval字符串,因此所有轉義符都已被刪除。第二場比賽檢查<number>.<number>.<number>+
試圖捕捉試圖插入有效IP的人(但顯然沒有很好地完成這項工作)。希望有所幫助!
剛剛又有了一個念頭。是否有可能查看VAL並確定它是否爲數字,然後驗證爲IP,如果是文本全部條目? – MacMan
更改Ip的正則表達式? – CR41G14