You are on page 1of 4

Mtodo String matches de Java

El mtodo matches de String nos permite comprobar si un String cumple una expresin
regular pasado como parmetro. Si es cierta devuelve true, sino false.

Una expresin regular es una expresin textual que utiliza smbolos especiales para
hacer bsquedas avanzadas.

Las expresiones pueden contener:

Caracteres.

Caracteres de control, por ejemplo, \s, \d, etc. Recuerda que aadir un \ mas al
introducirlo en una cadena. Los mas usados son:

o \d , dgito, es igual que [0-9]

o \D , no dgito, es igual que [^0-9]

o \s , carcter en blanco, es igual que [\t\n\x0B\f\r]

o \S , no carcter en blanco, es igual que [^\s]

o \w , carcter alfanumrico, es igual que [a-zA-Z_0-9]

o \W , no carcter alfanumrico, es igual que [^\w]

Opciones de caracteres, se usa el corchete. Por ejemplo, [afgd] significa que


puede contener a, f, g o d.

Negacin de caracteres, funciona al revs que el anterior, se usa ^. Por ejemplo,


[^afgd]

Rangos, se usa para que incluya un rango de caracteres. Por ejemplo, para que
incluya los caracteres entre a y z [a-z]

Interseccin: permite unir dos condiciones, es como el operador &&.

Cualquier carcter: se usa un punto.

Opcional: se usa el smbolo ?, indica que un carcter puede o no aparecer.

Repeticin: se usa el smbolo *, indica que un conjunto de caracteres se pueden


repetir o no.
Repeticin obligada: se usa el smbolo +, es como el anterior pero debe
aparecer mnimo una vez.

Repeticin un nmero exacto de veces: despus de una expresin abrimos


llaves {} con un nmero dentro, indica el numero de veces que debe repetirse un
carcter o expresin. Si despus del numero escribimos una coma, indica que
debe repetirse como mnimo el nmero que indiquemos y como mximo los que
queramos. Si despus de la coma escribimos un nmero, indica que debe
repetirse entre los nmeros que le indiquemos como si fuera un rango.

Veamos una serie de ejemplos:

1 public class PruebaApp {


2
public static void main(String[] args) {
3
4 String cadena="Solo se que no se nada";
5
6 // ejemplo1: devolvera false, ya que la cadena tiene mas
7 caracteres
8 System.out.println("ejemplo1: "+cadena.matches("Solo"));
9
1 // ejemplo2: devolvera true, siempre y cuando no cambiemos
la cadena Solo
0 System.out.println("ejemplo2: "+cadena.matches("Solo.*"));
11
1 // ejemplo3: devolvera true, siempre que uno de los
2 caracteres se cumpla
1 System.out.println("ejemplo3:
3 "+cadena.matches(".*[qnd].*"));
1
// ejemplo3: devolvera false, ya que ninguno de esos
4 caracteres estan
1 System.out.println("ejemplo4:
5 "+cadena.matches(".*[xyz].*"));
1
6 // ejemplo4: devolvera true, ya que le indicamos que no
incluya esos caracteres
1 System.out.println("ejemplo4:
7 "+cadena.matches(".*[^xyz].*"));
1
8 // ejemplo5: devolvera true, si quitamos los caracteres
1 delante de ? del STring original seguira devolviendo true
9 System.out.println("ejemplo5: "+cadena.matches("So?lo se qu?
e no se na?da"));
2
0 // ejemplo6: devolvera false, ya que tenemos una S mayuscula
2 empieza en el String
1 System.out.println("ejemplo6: "+cadena.matches("[a-z].*"));
2
2 // ejemplo7: devolvera true, ya que tenemos una S mayuscula
2 empieza en el String
System.out.println("ejemplo7: "+cadena.matches("[A-Z].*"));
3
2 String cadena2="abc1234";
4
2
5
2
6
2
7
2
8
2
9
3
0 // ejemplo8: devolvera true, ya que minimo debe repetirse
3 alguno de los caracteres al menos una vez
1 System.out.println("ejemplo8: "+cadena2.matches("[abc]
+.*"));
3
2 // ejemplo9: devolvera true, ya que, ademas del ejemplo
3 anterior, indicamos que debe repetirse un valor numerico 4 veces
3 System.out.println("ejemplo9: "+cadena2.matches("[abc]
3 +\\d{4}"));
4
3 // ejemplo10: devolvera true, ya que, ademas del ejemplo
anterior, indicamos que debe repetirse un valor numerico entre 1 y
5 10 veces
3 System.out.println("ejemplo10: "+cadena2.matches("[abc]
6 +\\d{1,10}"));
3
7 }
}
3
8
3
9
4
0
4
1
4
2
4
3

El mejor ejemplo para este mtodo es la evaluacin de un e-mail, veamos como seria:

1 import javax.swing.JOptionPane;
2 public class PruebaApp {
3 public static void main(String[] args) {
4
5 String email;
6 boolean emailCorrecto;
7 do{
8 email=JOptionPane.showInputDialog("Introduce un email");
emailCorrecto=email.matches("[-\\w\\.]+@\\w+\\.\\w+");
9 }while(!emailCorrecto);
10
11
12 System.out.println("El email "+email+" es correcto");
13 }
14}
15

You might also like