JavaScript - 检查输入是否为数字

时间:2021-02-17 11:52:13

标签: javascript validation

我面临以下(基本)问题:我想检查来自 HTML 输入字段的输入是否不大于 5 或​​不是数字。如果给出这个函数应该返回true。否则(所以如果大于 5 或​​一个数字)它应该返回 false。到目前为止,如果数字不大于 5 的验证工作正常,但是当我添加 typeof-argument 时,这个验证不起作用。 到目前为止,这是我的代码,提前致谢!

function isValidStart(start) {
if (start.trim().length > 5 || typeof(start) === 'number') {
   return false
 }
 return true

3 个答案:

答案 0 :(得分:1)

Element.value(输入、选择、文本区域等)将始终是字符串

测试是否可以使用一个小的正则表达式和 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

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

单个整数:

匹配范围为 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

答案 1 :(得分:0)

您可以使用 Number.isFinite() 函数来检查变量是否为有限数,这在您的用例中应该完成这项工作。

let intVar = 2;
Number.isFinite(intVar);
$true

但是看起来您的 start 变量实际上不是数字,因为您不能在数字上调用 .trim()。所以这个 if 语句永远不会返回 True。

您应该对变量进行类型转换。 https://www.w3schools.com/js/js_type_conversion.asp

答案 2 :(得分:0)

minimize(obj, x, args=(args, ), method='L-BFGS-B', callback=callback)

args = 0
def callback(xk):
    global args
    args = args + 1
    ...