2011-10-10 21 views
5

Ho bisogno di un'espressione regolare in javascript che accetterà solo numeri positivi e decimali. Questo è quello che ho ma qualcosa non va: non sembra prendere cifre positive.Espressione regolare per accettare solo numeri positivi e decimali

Per esempio, 9 non funzionerà. Come posso ristrutturare questo modo se c'è almeno una cifra positiva, funzionerà?

+0

Dato che hai + dopo ogni [0-9] classe di caratteri, i numeri senza decimali dovranno essere lunghi almeno due cifre. –

risposta

14
/^[+]?([0-9]+(?:[\.][0-9]*)?|\.[0-9]+)$/ 

partite

0 
+0 
1. 
1.5 
.5 

ma non

. 
1..5 
1.2.3 
-1 

EDIT:

Per gestire la notazione scientifica (1e6), si potrebbe desiderare di fare

/^[+]?([0-9]+(?:[\.][0-9]*)?|\.[0-9]+)(?:[eE][+-]?[0-9]+)?$/ 

Se si desidera che i numeri rigorosamente positivi, non pari a zero, si può fare

/^[+]?([1-9][0-9]*(?:[\.][0-9]*)?|0*\.0*[1-9][0-9]*)(?:[eE][+-][0-9]+)?$/ 
+0

Sì, questo è abbastanza buono .. Non riesco a trovare alcun problema. –

+0

@MikeChristensen, non gestisce la notazione scientifica, ma puoi schiaffare un opzionale '[eE] [+ -]? [0-9] +' prima di '$' per gestirlo. –

1

Ci sono diversi modi per fare questo a seconda delle necessità:

/^[0-9.]+$/ partite 1 e 1.1 ma non -1

/^[0-9]+\.[0-9]+$/ partite 1.1 ma non 1 o -1

In generale, mi consiglia di utilizzare una semplice guida di riferimento regExp come http://www.regular-expressions.info/ per la costruzione di espressioni, e quindi testarle usando java script di destra la console del browser:

"123.45".match(/^[0-9.]+$/)

+0

Questo includerà anche '...' e così via. – NT3RP

+0

Vero che - sembrava che la domanda fosse più ampia prima di essere modificata. –

1

Come su come:

^[.]?[0-9]+[.]?[0-9]*$ 
+0

Non corrisponde anche a cose come '.0.0'? – NT3RP

+0

Sì, questo è un problema .. Immagino che usare la clausola "o" sia la migliore scommessa .. –

0

Si può provare questo -

^\d{0,10}(\.\d{0,2})?$ 

Anche un sito interessante da testare e ottenere una descrizione delle proprie espressioni regolari https://regex101.com/

Problemi correlati