我面临以下(基本)问题:我想检查来自html输入字段的输入是否不大于5或不是数字。如果给出了这个值,函数应该返回true。否则(因此,如果大于5或一个数字),它应该返回false。到目前为止,如果数字不大于5的验证工作得很好,但当我添加类型参数时,这个就不起作用了。这是我的代码到目前为止,提前感谢!
function isValidStart(start) {
if (start.trim().length > 5 || typeof(start) === 'number') {
return false
}
return true
Element.value
(input, select, textarea等)将始终是字符串.
测试是否使用了一个单位数整数范围,可以通过一个小的Regex和RegExp.prototype.test()来实现。
测试长度为5的整数
const isValidStart = v => /^d{1,5}$/.test(v); // or use [0-5]
console.log(isValidStart("1")) // true
console.log(isValidStart("55555")) // true
console.log(isValidStart(2)) // true
console.log(isValidStart("a12")) // false
您甚至不必关心值是String还是Number。
单一整数:
匹配范围1到5的单个数字:
const isValidStart = v => /^[1-5]$/.test(v); // or use [0-5]
console.log(isValidStart("1")) // true
console.log(isValidStart(2)) // true
console.log(isValidStart("a")) // false
console.log(isValidStart("6")) // false
您可以使用Number.isFinite()
函数来检查变量是否为有限数,在您的用例中,它应该执行任务。
let intVar = 2;
Number.isFinite(intVar);
$true
然而,看起来你的start
变量实际上不是一个数字,因为你不能在一个数字上调用.trim()
。所以这个if语句永远不会返回True。
应该对变量进行类型转换。https://www.w3schools.com/js/js_type_conversion.asp
let reg = new RegExp(/^d{0,5}$/);
console.log(reg.test('1'));
console.log(reg.test('12'));
console.log(reg.test('123'));
console.log(reg.test('1234'));
console.log(reg.test('12345'));
console.log(reg.test('string'));
console.log(reg.test('124var123'));