2009-12-24 13 views
6

Chcę wzór regex, aby sprawdzić, że ciąg nie zawiera żadnych cyfr.Brak cyfr Wzorzec Java Regex

Dla ilustracji: Kodowanie systemu szpitalnego i chcę od użytkownika, aby wprowadzić nazwę pacjenta, Oczywiście nazwa nie powinna zawierać żadnych cyfr, w jaki sposób mogę to zrobić przez Regex?

+0

O ile, oczywiście , posiadanie nazwy zawierającej cyfry jest legalne. Przez lata widziałem dziwne imiona. – jball

+2

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

+1

jball: SQL nie odnosi się do tego pytania. Myślę też, że sprawdzanie tylko cyfr z regexem jest trochę przesadzone, na pewno jeśli spodziewasz się pewnej formy dla nazwy, to jest w porządku, ale jestem skłonny założyć się, że za pomocą dowolnej z metod pomocniczych w klasie 'Character' szybciej niż jakikolwiek regex. – Esko

Odpowiedz

18

\D jest non-cyfrowy, a więc wtedy \D* jest dowolna liczba nie-cyfr w rzędzie. Więc cały ciąg powinien pasować do \D*.

+2

To wyrażenie jest w porządku, jeśli używasz metody 'matches()'. Jeśli użyjesz 'find()', zawsze otrzymasz dopasowanie, cyfry lub nie. Jeśli z jakiegoś powodu musiałeś użyć 'find()', musisz zakotwiczyć wyrażenie: '^ \ D * $' –

0

nazwy Dobrze zazwyczaj alfabetycznym, więc to będzie dobre: ​​[a-b,A-Z, ,-]+

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

+2

co z nazwami zawierającymi apostrof? – jball

+2

Dlaczego masz tam wszystkie te przecinki? Wszystko, co robią, to dopasować dosłowny przecinek w ciągu docelowym. A co z zasięgiem 'a-b'? Czy to nie powinno być "a-z"? –

+0

@Alan, poprawiono literówkę. – fastcodejava