2012-12-03 23 views
7

Desidero un'espressione regolare che accetterà solo numeri in virgola mobile da 0 a 9 e segno meno.Regex che accetta numeri in virgola mobile e segno meno (-)

Per favore aiuto.

+0

Cosa hai provato? Con cosa stai avendo problemi? – SLaks

+0

Quale separatore decimale stai usando: ',', '.' o entrambi? –

+0

possibile duplicato di [Regex per virgola mobile?] (Http://stackoverflow.com/questions/9186780/regex-for-floating-point) –

risposta

11

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

  • ^ - inizio della stringa
  • [-+]?-0 o 1 indicatore di segno
  • [0-9]*-0 o più numeri interi
  • \. - il carattere . (. viene utilizzato in regex per significare "qualsiasi carattere")
  • [0-9]+-1 o più numeri interi
  • $ - alla fine della stringa

Se si sta invece usando la virgola come separatore decimale , utilizzare , invece di \.

Se si utilizza sia/sia, è possibile utilizzare [.,]

+0

Questo consente solo il separatore decimale di un periodo, non un carattere qualsiasi. Sbarazzarsi della barra rovesciata significa "qualsiasi carattere". Ma questo non sarebbe valido per un numero in virgola mobile.E la tua ultima frase dovrebbe menzionare '[.,]'. – rmaddy

+0

@rmaddy Penso che tu abbia torto su entrambe le tue affermazioni. Intendevo consentire solo il. come separatore decimale nella stringa originale, ecco perché ho aggiunto le frasi in più. L'ultima frase funziona con entrambi [.,] O [\.,] Almeno su http://regexpal.com –

+0

Qualsiasi espressione regolare con cui abbia mai lavorato, si dovrebbe semplicemente mettere '[.,]', Non ' [\.,] '. Ma non ho lavorato con tutti i possibili motori regex. Devo aver letto male qualcosa quando ho commentato perché quando guardo la tua risposta ora, la maggior parte del mio commento non sembra applicarsi. Deve essere stato un po 'di editing da quando ho commentato. – rmaddy

0

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

Questa espressione regolare corrisponderà a un segno opzionale, seguito da zero o più cifre seguite da un punto e da una o più cifre (un numero in virgola mobile con parte intera facoltativa) o seguito da una o più cifre (un numero intero).

Fonte: http://www.regular-expressions.info/floatingpoint.html - modificato per funzionare con le virgole come separatore decimale

+0

Questo non funzionerà in locali che utilizzano un separatore decimale diverso dal punto. – rmaddy

+0

Grazie, modificato. –

+0

Attualmente consente a qualsiasi carattere di essere utilizzato come separatore. '\ .' –

Problemi correlati