2009-10-27 16 views
23

¿Cómo puedo crear una expresión de expresiones regulares que coincida solo con letras y números, y un espacio de entre cada palabra?¿Qué expresiones regulares puedo usar para unir solo letras, números y un espacio entre cada palabra?

Buenos ejemplos:

 
Amazing 

Hello World 

I am 500 years old 

Ejemplos negativos:

 
Hello world 

I am 500 years  old. 

I am Chuck Norris 
+0

¿Quieres que coincida con una línea que contiene varias palabras como éstas o solamente una palabra a la vez? ¿Podría por favor elaborar con algunos ejemplos qué es exactamente lo que quiere hacer coincidir? – Jaskirat

+0

Agregué algunos ejemplos, lo siento. –

+0

¿Por qué el requisito de no permitir espacios múltiples? ¿Es realmente tan importante o puedes convertir automáticamente todos los espacios múltiples en espacios individuales antes de aplicar la expresión regular? ¿O es solo un ejercicio académico? –

Respuesta

23

mayoría de las implementaciones de expresiones regulares soporte para named clases de personajes:

^[[:alnum:]]+([[:alnum:]]+)*$ 

Usted podría ser inteligente, aunque un poco menos clara y simplificar esto a:

^([[:alnum:]]+ ?)*$ 

FYI, el segundo permite un carácter de espacio espurio al final de la cuerda. Si no quieres que se quede con la primera expresión regular.

También como dicen otros carteles, si [[:alnum:]] no funciona para usted, entonces puede usar [A-Za-z0-9] en su lugar.

+0

Te daré un voto si agregas "?" al comienzo para manejar un solo espacio al comienzo de la línea/cadena (y los $^puntos de anclaje). Todo lo demás parece bueno. – paxdiablo

+0

Parece que no funciona (lo necesito en ASP RegExp) –

+3

Lo siento, acabo de ver su edición. Está funcionando muy bien la siguiente expresión regular:^([A-Za-z0-9] +?) * $ ¡Muchas gracias! –

-1

Esto se correspondería con una palabra

'[a-zA-Z0-9]+\ ?' 
+0

Genial, ahora haz que maneje una línea :-) – paxdiablo

+0

No, coincidiría * con * algunas palabras. Solo aquellos que contienen los intervalos (ascii) a-z y A-Z. La palabra 'café' no se correspondería. También coincidiría con cadenas que constan únicamente de dígitos como '01012009', algo que no llamaría una palabra. –

+0

Esto no responde a la pregunta –

7
([a-zA-Z0-9]+ ?)+? 
+0

Y se maneja un espacio al comienzo de la línea ¿cómo? :-) – paxdiablo

2
^[a-zA-Z]+([\s][a-zA-Z]+)*$ 
6
^([a-zA-Z0-9]+\s?)*$ 

sus obras

+0

Esto coincide incluso si hay un espacio al final. –

Cuestiones relacionadas