2011-03-28 54 views
41

Necesito una expresión regular para validación two or one números luego , o . y nuevamente two or one números.Regex solo números y punto o coma

tanto, estas son entradas válidas:

11,11 
11.11 
1.1 
1,1 
+6

[al hacer preguntas expresiones regulares, siempre añadir etiqueta para el lenguaje de programación específico o herramienta (por ejemplo, Perl, Python o Java; vi, emacs o ɢɴᴜ grep; etc.) que está utilizando.] (http://stackoverflow.com/tags/regex/info) – Johnsyweb

Respuesta

58
\d{1,2}[\,\.]{1}\d{1,2} 

EDIT: actualización para cumplir con los nuevos requisitos (comentarios);)
EDIT: eliminar qtfier innecesario según Bryan

^[0-9]{1,2}([,.][0-9]{1,2})?$ 
+0

Lo siento, no lo he especificado, pero el,. y los números después de esto no son necesarios.1 o 11 también es válido. – user256034

+5

^[0-9] {1,2} ([,.] {1} [0-9] {1,2})? $ Esto coincidirá con 11 11,11 11.11 1.1 y no coincidirá con 11. o 11.11.11. y se probó con perl aunque parece que posix es compatible conmigo, por lo que debería funcionar con otros motores de expresiones regulares – user237419

+1

El '{1}' no es necesario. –

10
\d{1,2}[,.]\d{1,2} 

\ d significa un dígito, la {1,2} parte significa 1 o 2 del carácter anterior (\ d en th es el caso) y la parte [,.] significa una coma o un punto.

+0

Disculpe que no especifiqué pero el,. y los números después de esto no son necesarios.1 o 11 también es válido. – user256034

13

\d significa un dígito en la mayoría de los idiomas. También puede usar [0-9] en todos los idiomas. Para el "período o coma", use [\.,]. Dependiendo de su idioma, es posible que necesite más barras invertidas en función de cómo se cita la expresión. En última instancia, el motor de expresiones regulares necesita ver una sola barra invertida.

* significa "cero o más", por lo que \d* y [0-9]* significan "cero o más números". ? significa "cero o uno". Ninguno de esos calificadores significa exactamente uno. La mayoría de los idiomas también le permiten usar {m,n} para significar "entre m y n" (es decir: {1,2} significa "entre 1 y 2")

Dado que el punto o la coma y los números adicionales son opcionales, puede ponerlos en un grupo y use el cuantificador ? para significar "cero o uno" de ese grupo.

Poner que en su conjunto se puede utilizar:

\d{1,2}([\.,][\d{1,2}])? 

significados, uno o dos dígitos \d{1,2}, seguido de cero o uno de un grupo (...)? que consiste en un punto o una coma seguida de uno o dos dígitos [\.,]\d{1,2}

9

con el fin de representar un solo dígito en la forma de una expresión regular puede utilizar cualquiera:

[0-9] o \ d

Con el fin de especificar cuántas veces aparece el número deberá añadir

[0-9] *: la estrella significa que hay cero o más dígitos

[0-9] {2}: {N} significa n dígitos

[0-9] {0,2}: {N, M} n dígitos o dígitos M

[0-9] {0-9}: {NM} N dígitos a M dígitos.Nota: M puede dejarse en blanco para una representación infinita

digamos que quiero representar un número entre 1 y 99 expresaría como tal:

[0-9] {1- 2} o [0-9] {1,2} o \ d {1-2} o \ d {1,2}

O digamos que estamos trabajando con la visualización binaria, que muestra un tamaño de byte, queremos que nuestros dígitos estén entre 0 y 1 y la longitud de un tamaño de byte, 8, por lo que lo representaríamos de la siguiente manera:

[0-1] {8} representación de un byte binario

Entonces, si usted quiere añadir una, o una. símbolo que usaría:

\, o \. o puede utilizar [.] o [,]

Puede también indicar una selección entre los posibles valores como tal

[.], significa que ya sea un punto o un símbolo de coma

Y solo necesita concatenar las piezas, de modo que en el caso en que desee representar un número de 1 o 2 dígitos seguido de una coma o un punto y seguido de dos dígitos más, lo expresaría de la siguiente manera: >

[0-9] {1,2} [.,] \ D {1-2}

También tenga en cuenta que las cadenas de expresiones regulares dentro de cadenas de C++ deben ser de doble back-reducido por lo que cada \ se convierte en \\

0

Si quieres ser muy permisiva, requiere sólo dos dígitos finales con una coma o un punto:

^([,.\d]+)([,.]\d{2})$ 
Cuestiones relacionadas