レビュー
String.prototype.Contains = function (str) {
return this.indexOf(str) != -1;
};
この文字列「メソッド」はstr、'hello world'.indexOf('world') != -1 would returntrue` のように、それ自体に含まれている場合に true を返します。
var validChars = '0123456789';
var str = $("#textbox1").val().toString();
の値$('#textbox1').val()はすでに文字列であるため、.toString()ここでは必要ありません。
if (str.Contains(validChars)) {
alert("found");
} else {
alert("not found");
}
ここで問題が発生します。事実上、これは実行され'1234'.indexOf('0123456789') != -1ます。falseのような膨大な数がない限り、ほとんどの場合返されます10123456789。
あなたができることは、各文字がの中にstr含まれているかどうかをテストすることです。ただし、はるかに簡単に実行できます。'0123456789''0123456789'.indexOf(c) != -1cstr
解決
あなたが正規表現を好まないのは承知していますが、次のような場合に非常に役立ちます。
if ($("#textbox1").val().match(/^[0-9()]+$/)) {
alert("valid");
} else {
alert("not valid");
}
説明
[0-9()]0-9は、 for の略である範囲と0123456789括弧で構成される文字クラス()です。
[0-9()]+上記の文字クラスに一致する少なくとも 1 つの文字に一致します。
^[0-9()]+$すべての文字が文字クラスに一致する文字列に一致します。^および$文字列の先頭と末尾にそれぞれ一致します。
/最後に、正規表現の区切り文字である で、式全体の両側がパディングされます。の略ですnew RegExp('^[0-9()]+$')。