2010-12-15 64 views
9

Necesito una expresión regular de Java, que comprueba que la cadena dada no está vacía. Sin embargo, la expresión debe ignorar si el usuario accidentalmente ha dado espacios en blanco al comienzo de la entrada, pero permite espacios en blanco más adelante. Además, la expresión debería permitir letras escandinavas, Ä, Ö, etc., tanto en mayúsculas como en minúsculas.Expresión regular para no vacío

He buscado en Google, pero nada parece rodar en mis necesidades. Por favor ayuda.

+3

'str.trim(). Equals (" ")'? – khachik

+1

'StringUtils.isEmpty()' –

Respuesta

2
^\s*\S 

(omitir cualquier espacio en blanco en el inicio, a continuación, coincide algo que no es un espacio en blanco)

+0

¿No permite espacios en blanco más adelante? – jaana

+0

Depende si coincide con toda la cadena o no. Si desea hacer coincidir con toda la cadena, agregue. * $ Hasta el final. Pero a menos que deba usar una expresión regular, como han señalado otros, el corte es más directo. –

+3

De hecho, incluso bare \ S es suficiente. No necesita ningún anclaje al inicio, ya sea que contenga espacios en blanco o no. – Muxecoid

4

esto debería funcionar:

/^\s*\S.*$/ 

sino una expresión regular podría no ser la mejor solución en función de lo de lo contrario tienes en mente.

+0

No funciona en absoluto – jaana

+1

@jaana: Esta respuesta está en la sintaxis de JavaScript; en Java sería '"^\\ s * \\ S. * $ "'. –

2

No necesita una expresión regular para esto. Esto funciona, es más clara y más rápido:

if(myString.trim().length() > 0) 
-3

Es más rápido para crear un método para esto en lugar de utilizar expresiones regulares

/** 
* This method takes String as parameter 
* and checks if it is null or empty. 
* 
* @param value - The value that will get checked. 
* Returns the value of "".equals(value). 
* This is also trimmed, so that "  " returns true 
* @return - true if object is null or empty 
*/ 
public static boolean empty(String value) { 
    if(value == null) 
     return true; 

    return "".equals(value.trim()); 
} 
+0

¿qué pasa con String.IsNullOrEmpty (value)? –

15

También puede utilizar positive lookahead assertion afirmar que la cadena tiene al menos uno no espacio en blanco:

^(?=\s*\S).*$ 

En Java necesita

"^(?=\\s*\\S).*$" 
+2

+1 porque a veces es aún más fácil usar una expresión regular que un método. Ejemplo: @Pattern para la validación JSR-303 cuando no se puede usar @NotBlank de Hibernate. Buena optimización de trabajo –

+0

Esta expresión regular no funciona si tu EditText es multilínea – VLeonovs

3

Para las pruebas en la entrada no vacío que utilizo:

private static final String REGEX_NON_EMPTY = ".*\\S.*"; 
// any number of whatever character followed by 1 or more non-whitespace chars, followed by any number of whatever character 
9

para una cadena no vacía utilizan .+.

Cuestiones relacionadas