2009-12-24 28 views
6

Desidero una ripetizione regolare per verificare che la stringa non contenga cifre.Nessuna cifra Java Regex Pattern

Per illustrazione: Sto codificando un sistema ospedaliero e desidero che l'utente inserisca il nome del paziente, Ovviamente il nome non deve contenere cifre, come posso farlo con Regex?

+0

meno che, naturalmente , è legale avere un nome che includa cifre. Ho visto alcuni nomi strani nel corso degli anni. – jball

+2

http://xkcd.com/327/ – jball

+1

jball: SQL non è relativo a questa domanda. Inoltre penso che controllare solo le cifre con regex sia un po 'eccessivo, certamente se ti aspetti una certa forma per il nome, allora va tutto bene, ma sono disposto a scommettere che usare uno qualsiasi dei metodi helper nella classe 'Character' stessa è più veloce di qualsiasi regex. – Esko

risposta

18

\D è un non-cifre, e così poi \D* è un qualsiasi numero di non cifre di fila. Quindi la tua intera stringa dovrebbe corrispondere a \D*.

+2

L'espressione regolare va bene se si utilizza il metodo 'matches()'. Se usi 'find()' otterrai sempre una corrispondenza, cifre o no. Se per qualche ragione dovessi usare 'find()' avresti bisogno di ancorare la regex: '^ \ D * $' –

2

Prova: \ D

consultare Javadoc per Pattern

0

nomi ben solito alfabetico, quindi questo sarà un bene: [a-b,A-Z, ,-]+

EDIT: [a-zA-Z- ',]+

+2

per quanto riguarda i nomi che includono un apostrofo? – jball

+2

Perché hai tutte quelle virgole lì dentro? Tutto ciò che fanno è corrispondere a una virgola letterale nella stringa di destinazione. E cosa c'è nella gamma 'a-b'? Non dovrebbe essere "a-z"? –

+0

@Alan, errore di battitura corretto. – fastcodejava

3

\ A \ D * \ Z

una buona espressione regolare cheatsheet qui