[英]JavaScript - Check if input is a number
我面临以下(基本)问题:我想检查来自 HTML 输入字段的输入是否不大于 5 或不是数字。 如果给出了 function 应该返回 true。 否则(所以如果大于 5 或数字)它应该返回 false。 到目前为止,如果数字不大于 5 的验证工作正常,但是当我添加 typeof-argument 时,这个验证不起作用。 到目前为止,这是我的代码,在此先感谢!
function isValidStart(start) {
if (start.trim().length > 5 || typeof(start) === 'number') {
return false
}
return true
Element.value
(输入、select、textarea 等)将始终是String 。
测试是否使用单个数字 integer 范围可以通过一个小的 Regex 和RegExp.prototype.test()来实现。
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
您甚至不必关心值是字符串还是数字。
匹配从 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()
function 来检查变量是否是有限数,在您的用例中应该这样做。
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'));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.