脚本验证号码1-100

时间:2018-10-21 00:33:08

标签: javascript

因此,我需要编写一个脚本来验证大于零且小于100的数字。要注意的是,只有中间位置有小数并且至少有两位小数时,该数字才能被接受。 / p>

示例:将验证19.30。9.3、9.30和19.3被视为无效。

我认为正则表达式将是验证十进制标准的最佳方法?

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