因此,我需要编写一个脚本来验证大于零且小于100的数字。要注意的是,只有中间位置有小数并且至少有两位小数时,该数字才能被接受。 / p>
示例:将验证19.30。9.3、9.30和19.3被视为无效。
我认为正则表达式将是验证十进制标准的最佳方法?
答案 0 :(得分: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
答案 1 :(得分:1)
您可以做的是在小数点上分割,然后测试字符串的长度。
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'))
答案 2 :(得分:0)
以下正则表达式可以满足您的需求,我认为只要输入是字符串以及比较运算符即可
\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