2009-12-24 36 views
6

Quiero un patrón regex para verificar que la cadena no contenga ningún dígito.Sin dígitos Java Regex Pattern

Para la ilustración: Estoy codificando un sistema de hospital y quiero que el usuario ingrese el nombre del paciente, por supuesto el nombre no debe contener ningún dígito, ¿cómo puedo hacer esto con Regex?

+0

A menos que, por supuesto , es legal tener un nombre que incluya dígitos. He visto algunos nombres raros a lo largo de los años. – jball

+2

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

+1

jball: SQL no se relaciona con esta pregunta. También creo que revisar solo los dígitos con expresiones regulares es un poco exagerado, ciertamente si esperas cierta forma para el nombre, entonces está bien, pero estoy dispuesto a apostar que usar cualquiera de los métodos de ayuda en la clase 'Character' es más rápido que cualquier expresión regular. – Esko

Respuesta

18

\D es un no-dígitos, y así entonces \D* es cualquier número de no-dígitos en una fila. Por lo tanto, toda la cadena debe coincidir con \D*.

+2

Esa expresión regular está bien si estás usando el método 'matches()'. Si usa 'find()' siempre obtendrá una coincidencia, dígitos o no. Si por alguna razón tuviera que usar 'find()', necesitaría anclar la expresión regular: '^ \ D * $' –

2

Probar: \ D

consulte el Javadoc de Pattern

0

nombres bien generalmente alfabético, por lo que esto será bueno: [a-b,A-Z, ,-]+

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

+2

¿Qué pasa con los nombres que incluyen un apóstrofo? – jball

+2

¿Por qué tienes todas esas comas allí? Todo lo que hacen es hacer coincidir una coma literal en la cadena objetivo. ¿Y qué hay con el rango 'a-b'? ¿No se supone que es 'a-z'? –

+0

@Alan, error corregido. – fastcodejava

3

\ A \ D * \ Z

una buena expresión regular cheatsheet aquí