繁体   English   中英

JavaScript - 检查输入是否为数字

[英]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()来实现。

测试长度为 5 的 integer

 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

您甚至不必关心是字符串还是数字。

单 integer:

匹配从 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM