0

Is there most effective way to validate decimal numbers in JavaScript?

For example like below:

01. IsDec('-7.7')      => true
02. IsDec('-18')    => true
03. IsDec('0')       => true
04. IsDec('.845')    => true
05. IsDec('0.957')     => true
06. IsDec('0x45f')  => false
07. IsDec('15,87')   => false
08. IsDec('#text') => false
09. IsDec('75.95.69')   => false
10. IsDec('')        => false
11. IsDec('someText')    => false

3 Answers3

0

try like this:

console.log(isDec("-12.5"));
console.log(isDec("12.5"));
console.log(isDec("0"));
console.log(isDec(".45"));
console.log(isDec("1,5"));
console.log(isDec("#ssdr"));

function isDec(txt) {
    return !isNaN(parseFloat(txt)) && isFinite(txt);
}
0

Here's a regex for checking.

/^-?\d*\.?\d*(?<!^\.?)$/

console.log('--- true cases ---');
console.log(isDec('-7.7'));
console.log(isDec('-18'));
console.log(isDec('0'));
console.log(isDec('.845'));
console.log(isDec('0.957'));
console.log(isDec('16.'));

console.log('--- false cases ---');
console.log(isDec('0x45f'));
console.log(isDec('15,87'));
console.log(isDec('#text'));
console.log(isDec('75.95.69'));
console.log(isDec(''));
console.log(isDec('someText'));
console.log(isDec('.'));

function isDec(txt) {
  const regex = /^-?\d*\.?\d*(?<!^\.?)$/;
  return regex.test(txt);
}

Check the result here

Hao Wu
  • 17,573
  • 6
  • 28
  • 60
0

Please try the below function for checking decimal number

function isDecimal(n) {
   return !isNaN(parseFloat(n)) && isFinite(n);
}

ans :

isDecimal('-7.7')      => true
Axe319
  • 4,255
  • 3
  • 15
  • 31
  • 1
    Whats the difference between you code and [this older answer](https://stackoverflow.com/a/64239913/13865476)? – fcdt Oct 07 '20 at 08:53