2011-06-19 23 views
6

Estoy tratando de obtener algo como:cómo conseguir 1-100 usando expresiones regulares

Hello, 0 (dont get) 
    Hello2, 100 (get) 
    hello3, 82 (get) 
    hello< 132 (dont get) 

que he hecho algo como esto hasta ahora:

[a-zA-Z]{1,255},([0-9]{1,3})(?<![0]) 

Pero no puede conseguir 132 y 100. ¿Cómo puedo arreglar esto?

+0

la respuesta de diferencia, cuando se hace una pregunta acerca de una expresión regular, que debe ** ** especificar qué tipo de expresiones regulares que está hablando. Aquí asumí que es similar a Perl o similar a ECMAScript. – Benoit

Respuesta

16

Prueba esta expresión regular que coincide con un número de 1 o 2 dígitos, o 100:

\d{1,2}(?!\d)|100 
+1

¿Cómo funciona eso? Puedo leer un poco, pero el?! \ d? ¿Qué demonios es eso? '[a-zA-Z] {1,255}, ([1-9] {1,3} (?! \ d) | 100)' funcionan bien para mí, pero aún así obtengo 132, etc. –

+3

'(?! .. .) 'es una aseveración de búsqueda anticipada negativa, ya que' (? Benoit

+1

@ Adam Ramadhan: Si obtiene números de más de 100 es porque no lo integró en su propia expresión regular, y también puede coincidir en el medio de un número. – Benoit

4

Por qué no hacer que sea sencillo?

^[a-zA-Z]{1,255}, (100|[1-9][0-9]|[1-9])$ 

o mejor aún

^[a-zA-Z]{1,255}, (100|[1-9][0-9]?)$ 

nota: esto no va a coincidir con ceros antepuestas por ejemplo, "Hola, 00001". Sin embargo, se puede ampliar fácilmente:

^[a-zA-Z]{1,255}, 0*(100|[1-9][0-9]?)$ 
+0

@Benoit allí, fijo – CAFxX

+1

¡Prefiero la segunda forma! +1 – Benoit

Cuestiones relacionadas