kzen.dev
  • Kérdések
  • Címkék
  • Felhasználók
Értesítések
Jutalmak
Regisztráció
Miután regisztrált, értesítést kap a kérdéseire adott válaszokról és hozzászólásokról.
Bejelentkezés
Ha már rendelkezik fiókkal, jelentkezzen be az új értesítések ellenőrzéséhez.
A hozzáadott kérdésekért, válaszokért és megjegyzésekért jutalmak járnak majd.
További
Forrás
Szerkesztés
Michael Haren
Michael Haren
Question

Tizedes számok hitelesítése JavaScriptben - IsNumeric()

Mi a legtisztább, leghatékonyabb módja a tizedes számok érvényesítésének JavaScriptben?

Bónuszpontok a következőkért:

  1. Világosság. A megoldásnak tisztának és egyszerűnek kell lennie.
  2. Keresztplatformos.

Tesztek:

01. IsNumeric('-1')      => true
02. IsNumeric('-1.5')    => true
03. IsNumeric('0')       => true
04. IsNumeric('0.42')    => true
05. IsNumeric('.42')     => true
06. IsNumeric('99,999')  => false
07. IsNumeric('0x89f')   => false
08. IsNumeric('#abcdef') => false
09. IsNumeric('1.2.3')   => false
10. IsNumeric('')        => false
11. IsNumeric('blah')    => false
2316 2008-08-20T14:21:13+00:00 3
 Nhan
Nhan
Szerkesztett kérdés 7. december 2016 в 3:57
Programozás
numbers
javascript
validation
Popular videos
Webfejlesztés alapok abszolút kezdőknek | Javascript | ALAPOK
Webfejlesztés alapok abszolút kezdőknek | Javascript | ALAPOK
3 éve
Webfejlesztés alapok abszolút kezdőknek | Javascript | DOM
Webfejlesztés alapok abszolút kezdőknek | Javascript | DOM
3 éve
JavaScript. Hogyan működik? Mire használjuk?
JavaScript. Hogyan működik? Mire használjuk?
3 éve
Javascript #8 - Véletlenszám-generálás
Javascript #8 - Véletlenszám-generálás
10 éve
Validate decimal numbers in JavaScript - IsNumeric()
Validate decimal numbers in JavaScript - IsNumeric()
9 éve
JavaScript : Validate decimal numbers in JavaScript - IsNumeric()
JavaScript : Validate decimal numbers in JavaScript - IsNumeric()
1 éve
How do I validate decimal numbers in JavaScript?
How do I validate decimal numbers in JavaScript?
3 éve
Objektumok JavaScript-ben
Objektumok JavaScript-ben
2 éve
Párában Fürdettem egy Tápegységet és ez Lett a Vége!
Párában Fürdettem egy Tápegységet és ez Lett a Vége!
1 éve
JavaScript 1/B. - Szoftverfejlesztési Technológiák gyak.
JavaScript 1/B. - Szoftverfejlesztési Technológiák gyak.
3 éve
Mi az az Observable és mire tudod használni JavaScriptben
Mi az az Observable és mire tudod használni JavaScriptben
3 éve
String és Tömb - gyakorlat (JavaScript)
String és Tömb - gyakorlat (JavaScript)
2 éve
JavaScript 01.: Bevezetés, események, formátum állítások
JavaScript 01.: Bevezetés, események, formátum állítások
2 éve
String és Tömb JavaScript-ben
String és Tömb JavaScript-ben
2 éve
Játékfejlesztés JavaScript-ben
Játékfejlesztés JavaScript-ben
3 éve
10 jel, hogy soha nem lesz belőled sikeres programozó
10 jel, hogy soha nem lesz belőled sikeres programozó
3 éve
Ki vagy Te? - Alkalmazás (JavaScript gyakorlat)
Ki vagy Te? - Alkalmazás (JavaScript gyakorlat)
2 éve
Hack: Megfigyelhető egy mentelmi joggal rendelkező személy a törvény szerint
Hack: Megfigyelhető egy mentelmi joggal rendelkező személy a törvény szerint
1 éve
2022 január 22 - szombat - 18 órai istentisztelet
2022 január 22 - szombat - 18 órai istentisztelet
1 éve
« Előző
Következő »
Ez a kérdés 1 válasz angol nyelvű, elolvasásához jelentkezzen be a fiókjába.
Michael Haren
Michael Haren
20. augusztus 2008 в 2:22
2008-08-20T14:22:56+00:00
További
Forrás
Szerkesztés
#8419850

Úgy tűnik, ez a módszer jól működik:

function IsNumeric(input){
    var RE = /^-{0,1}\d*\.{0,1}\d+$/;
    return (RE.test(input));
}

És hogy teszteljük:

// alert(TestIsNumeric());

function TestIsNumeric(){
    var results = ''
    results += (IsNumeric('-1')?"Pass":"Fail") + ": IsNumeric('-1') => true\n";
    results += (IsNumeric('-1.5')?"Pass":"Fail") + ": IsNumeric('-1.5') => true\n";
    results += (IsNumeric('0')?"Pass":"Fail") + ": IsNumeric('0') => true\n";
    results += (IsNumeric('0.42')?"Pass":"Fail") + ": IsNumeric('0.42') => true\n";
    results += (IsNumeric('.42')?"Pass":"Fail") + ": IsNumeric('.42') => true\n";
    results += (!IsNumeric('99,999')?"Pass":"Fail") + ": IsNumeric('99,999') => false\n";
    results += (!IsNumeric('0x89f')?"Pass":"Fail") + ": IsNumeric('0x89f') => false\n";
    results += (!IsNumeric('#abcdef')?"Pass":"Fail") + ": IsNumeric('#abcdef') => false\n";
    results += (!IsNumeric('1.2.3')?"Pass":"Fail") + ": IsNumeric('1.2.3') => false\n";
    results += (!IsNumeric('')?"Pass":"Fail") + ": IsNumeric('') => false\n";
    results += (!IsNumeric('blah')?"Pass":"Fail") + ": IsNumeric('blah') => false\n";

    return results;
}

Ezt a regexet a http://www.codetoad.com/javascript/isnumeric.asp oldalról kölcsönöztem. Magyarázat:

/^ match beginning of string
-{0,1} optional negative sign
\d* optional digits
\.{0,1} optional decimal point
\d+ at least one digit
$/ match end of string
65
0
Do you have a question? Add it on the site and get an answer instantly
en.kzen.dev
 Marius
Marius
20. augusztus 2008 в 3:40
2008-08-20T15:40:28+00:00
További
Forrás
Szerkesztés
#8419852

Szeretném hozzátenni a következőket:

1. IsNumeric('0x89f') => true
2. IsNumeric('075') => true

A pozitív hexaszámok 0x-vel kezdődnek, a negatív hexaszámok pedig -0x-vel. A pozitív oct számok 0-val kezdődnek, a negatív oct számok pedig -0-val. Ez a legtöbbet figyelembe veszi a már említettekből, de tartalmazza a hexa és oktális számokat, a negatív tudományos számokat, a végtelen számot, és eltávolította a decimális tudományos számokat (a 4e3.2 nem érvényes).

function IsNumeric(input){
  var RE = /^-?(0|INF|(0[1-7][0-7]*)|(0x[0-9a-fA-F]+)|((0|[1-9][0-9]*|(?=[\.,]))([\.,][0-9]+)?([eE]-?\d+)?))$/;
  return (RE.test(input));
}
Alexander Elgin
Alexander Elgin
Szerkesztett válasz 5. január 2018 в 1:02
5
0
Do you have a question? Add it on the site and get an answer instantly
en.kzen.dev
 pottedmeat
pottedmeat
20. augusztus 2008 в 2:53
2008-08-20T14:53:26+00:00
További
Forrás
Szerkesztés
#8419851

Néhány tesztet kell hozzátennem:

IsNumeric('01.05') => false
IsNumeric('1.') => false
IsNumeric('.') => false

Ezt találtam ki:

function IsNumeric(input) {
    return /^-?(0|[1-9]\d*|(?=\.))(\.\d+)?$/.test(input);
}

A megoldás fedezi:

  • Egy választható negatív előjel az elején
  • Egyetlen nulla, vagy egy vagy több számjegy, amely nem 0-val kezdődik, vagy semmi, amíg egy pont követi.
  • Egy pont, amelyet 1 vagy több számjegy követ.
Peter Mortensen
Peter Mortensen
Szerkesztett válasz 25. május 2011 в 9:25
4
0
Kérdés hozzáadása
Kategóriák
Minden
Technológia
Kultúra / Szabadidő
Élet / Művészetek
Tudomány
Szakmai
Üzleti
Felhasználók
Minden
Új
Népszerű
1
Andrei Kalinin
Regisztrált 2 hete
2
Koroleva Ego
Regisztrált 1 hónapja
3
Star Lenon
Regisztrált 1 hónapja
4
Данил Жевнеров
Regisztrált 1 hónapja
5
Анна Литвиненко
Regisztrált 2 hónapja
Do you have a question? Add it on the site and get an answer instantly
en.kzen.dev
DA
DE
EL
ES
FI
FR
HU
ID
IT
JA
LV
NL
NO
PL
PT
RO
TR
ZH
© kzen.dev 2023
Forrás
stackoverflow.com
engedéllyel cc by-sa 3.0 attribútummal