2012-10-02 46 views
0

我正在使用jQuery腳本來驗證表單域。這很好,但我想更改一個字段的驗證來檢查IP地址。jquery匹配()IP地址?

我想用正則表達式是:

\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(/^[^\\W][a-zA-Z0-9\\_\\-\\.]+([a-zA-Z0-9\\_\\-\\.]+)*\\@[a-zA-Z0-9_]+(\\.[a-zA-Z0-9_]+)*\\.[a-zA-Z]{2,4}$/)) return true; else return false;", 
       message: "Should be a valid Email id" 
      }); 
+0

剛剛又有了一個念頭。是否有可能查看VAL並確定它是否爲數字,然後驗證爲IP,如果是文本全部條目? – MacMan

+0

更改Ip的正則表達式? – CR41G14

回答

1

「\ 「在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的人(但顯然沒有很好地完成這項工作)。希望有所幫助!

+0

尼爾 - 感謝,似乎工作:)任何方式來看看VAL並決定它是否數字然後驗證爲IP,如果它的文本允許條目? – MacMan

+0

@ user1635970,是的,你應該能夠在事後進行檢查,假設它與IP不匹配。我會更新我的答案。 – Neil

+0

@Neil我想在我的項目中使用你的代碼,如果你不介意 –

0

假設正則表達式適用於IP地址,並假設你輸入IP地址真的id="Email",這應該工作:

jQuery("#Email").validate({ 
    expression: "return (VAL.match(/^[^\\W][a-zA-Z0-9\\_\\-\\.]+([a-zA-Z0-9\\_\\-\\.]+)*\\@[a-zA-Z0-9_]+(\\.[a-zA-Z0-9_]+)*\\.[a-zA-Z]{2,4}$/));", 
    message: "Should be a valid Email id" 
}); 
+0

謝謝我會試試這個。輸入不是電子郵件,我只是複製該驗證碼作爲示例! – MacMan