レビュー
String.prototype.Contains = function (str) {
return this.indexOf(str) != -1;
};
この文字列「メソッド」はstr
、'hello world'.indexOf('world') != -1 would return
true` のように、それ自体に含まれている場合に 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) != -1
c
str
解決
あなたが正規表現を好まないのは承知していますが、次のような場合に非常に役立ちます。
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()]+$')
。