脚本验证数字 1-100



所以我需要编写一个脚本来验证大于零且小于 100 的数字。问题是,只有当中间位置有小数并且至少有两位小数时,才能接受该数字。

示例:19.30将验证,但9.39.3019.3将被视为无效。

我认为正则表达式是验证十进制条件的最佳方式?

代码中的注释:

function validNumber(string) {
// parse string into number
let number = parseFloat(string, 10);
// check if number is in range
if (number <= 0 || number >= 100) return false;
// check if number is formatted correctly
if (string !== number.toFixed(2)) return false;
// return true if all conditions pass
return true;
}
console.log(validNumber("19.30")); // true
console.log(validNumber("9.3")); // false
console.log(validNumber("19.3")); // false
console.log(validNumber("100.30")); // false
console.log(validNumber("1.00")); // true

你可以做的是在小数上拆分,然后测试字符串的长度。

function validate(number) {
let [whole, decimal] = number.toString().split('.', 2)
let int = parseInt(whole)
return whole.length == decimal.length && decimal.length >= 2 
&& int > 0 && int < 100
}
console.log(validate('19.30'))
console.log(validate('9.3'))
console.log(validate('9.30'))
console.log(validate('-9.30'))
console.log(validate('19.3'))
console.log(validate('99.99'))
console.log(validate('1.111'))
console.log(validate('100.111'))
console.log(validate('1000.111'))

以下正则表达式满足您的需求,我认为提供的输入是字符串以及比较运算符

d{1,3}.d{2}+

您可以按如下方式使用它:

const isValid = (input) => {
const num = parseFloat(input, 10);
return (!!input.match(/d{1,3}.d{2}+/) && num > 0 && num < 100);
};
isValid('19.3') // => false
isValid('19.30') // => true

相关内容

最新更新