「\」文字は JavaScript ではエスケープ文字と見なされ、「\」文字として文字通り解釈されるように 2 つにする必要があります。引用符もエスケープする必要がありますが、存在しないようです。
正規表現に適用すると、次のようになります。
\\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」を呼び出すようになったことに注意してください。その結果、コードは評価文字列ではなくなり、すべてのエスケープが削除されました。<number>.<number>.<number>+
2 番目の一致は、誰かが有効な IP を挿入しようとしているのを捕まえるためにチェックします (しかし、どうやらあまりうまくいっていないようです)。それが役立つことを願っています!