2009-12-24 5 views
6

Я хочу, чтобы шаблон регулярного выражения проверял, что строка не содержит цифр.Нет цифр Java Regex Pattern

Для иллюстрации: Я кодирую систему больницы, и я хочу, чтобы у пользователя было имя пациента. Конечно, имя не должно содержать никаких цифр, как я могу это сделать с помощью Regex?

+0

Если, конечно, , законно иметь имя, которое включает цифры. Я видел несколько странных имен на протяжении многих лет. – jball

+2

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

+1

jball: SQL не относится к этому вопросу. Кроме того, я думаю, что проверка только для цифр с регулярным выражением - это чересчур избыток, конечно, если вы ожидаете определенную форму для имени, тогда все в порядке, но я готов поспорить, что использование любого из вспомогательных методов в самом классе Character быстрее, чем любое регулярное выражение. – Esko

ответ

18

\D не является цифрой, и поэтому тогда \D* любого количества нецифрового подряда. Поэтому вся ваша строка должна соответствовать \D*.

+2

Это регулярное выражение прекрасно, если вы используете метод 'matches()'. Если вы используете 'find()', вы всегда получите совпадение, цифры или нет. Если по какой-то причине вам приходилось использовать 'find()', вам нужно было бы привязать регулярное выражение: '^ \ D * $' –

0

Ну имена обычно в алфавитном порядке, так что это будет хорошо: [a-b,A-Z, ,-]+

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

+2

как насчет имен, которые включают апостроф? – jball

+2

Почему у вас есть все эти запятые? Все, что они делают, соответствует логической запятой в целевой строке. И что с диапазоном 'a-b'? Разве это не должно быть 'a-z'? –

+0

@Alan, Исправлена ​​опечатка. – fastcodejava

3

\ A \ D * \ Z

хороший регулярное выражение cheatsheet здесь