审查
String.prototype.Contains = function (str) {
return this.indexOf(str) != -1;
};
如果包含在其自身中,则此字符串“方法”返回 true str
,例如 'hello world'.indexOf('world') != -1 would return
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
的缩写0123456789
和括号()
。
[0-9()]+
匹配至少一个与上述字符类匹配的字符。
^[0-9()]+$
匹配所有字符与字符类匹配的字符串;^
并$
分别匹配字符串的开头和结尾。
最后,整个表达式的两边都用 填充/
,即正则表达式的分隔符。它是 的缩写new RegExp('^[0-9()]+$')
。