2009-10-27 23 views
23

Come posso creare un'espressione regolare che corrisponda solo a lettere e numeri e uno spazio tra ogni parola?Quale espressione regolare posso usare per abbinare solo lettere, numeri e uno spazio tra ogni parola?

Buone Esempi:

 
Amazing 

Hello World 

I am 500 years old 

cattivi esempi:

 
Hello world 

I am 500 years  old. 

I am Chuck Norris 
+0

Volete abbinare una linea contenente più parole come queste o una sola parola alla volta? Puoi per favore elaborare con alcuni esempi che cosa esattamente vuoi abbinare? – Jaskirat

+0

Aggiunti alcuni esempi, mi dispiace. –

+0

Perché il requisito di non consentire più spazi? È davvero così importante, o puoi semplicemente convertire automaticamente tutti gli spazi multipli in spazi singoli prima di applicare la regex? O è solo un esercizio accademico? –

risposta

23

maggior parte delle implementazioni regex intitolate classi di personaggi:

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

Potresti essere intelligente se un po 'meno chiaro e semplificare questo a:

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

Cordiali saluti, il secondo permette uno spazio spurio alla fine della stringa. Se non vuoi quel bastone con la prima espressione regolare.

anche come hanno detto altri manifesti, se [[:alnum:]] non funziona per voi, allora si può usare [A-Za-z0-9] invece.

+0

Ti darò un voto se aggiungi "?" all'inizio di gestire un singolo spazio all'inizio della riga/stringa (e dei punti di ancoraggio^$). Tutto il resto sembra buono. – paxdiablo

+0

Sembra non funzionare (ne ho bisogno in ASP RegExp) –

+3

Siamo spiacenti, ho appena visto la modifica. Sta funzionando alla grande la seguente espressione regolare:^([A-Za-z0-9] +?) * $ Grazie mille! –

-1

Questo sarebbe abbinare una parola

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

Ottimo, ora fai in modo che maneggi una linea :-) – paxdiablo

+0

No, corrisponderebbe * alcune * parole. Solo quelli che contengono gli intervalli (ascii) a-z e A-Z. La parola "café" non sarebbe stata abbinata. Corrisponde anche alle stringhe costituite esclusivamente da cifre come "01012009", qualcosa che non definirei una parola. –

+0

Questo non risponde alla domanda –

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

E uno spazio all'inizio della linea viene gestito come? :-) – paxdiablo

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

sue opere

+0

Corrisponde anche a uno spazio finale alla fine. –

Problemi correlati