Ce face String.matches
s.matches(regex) returnează true doar dacă tot șirul, de la primul la ultimul caracter, se potrivește cu expresia. Nu caută o bucată: "abc123".matches("\\d+") este false, chiar dacă șirul conține cifre.
Este potrivită pentru validări: cod poștal ("\\d{6}"), număr de telefon, număr de înmatriculare. Pentru a căuta un tipar în interiorul textului folosește Pattern și Matcher.find(). Dacă verifici același tipar de multe ori, compilează-l o dată cu Pattern.compile, pentru viteză.
Parametri
| Parametru | Descriere |
|---|---|
regex |
Expresia regulată pe care trebuie să o respecte întregul șir. |
Ce returnează
true dacă tot șirul se potrivește.
Exemple
Exemplul 1: Validarea unor formate
public class Main {
public static void main(String[] args) {
String[] coduri = {"700506", "70050", "7005O6"};
for (String c : coduri) {
System.out.println(c + " cod poștal valid: " + c.matches("\\d{6}"));
}
String[] numere = {"IS-12-ABC", "B-123-XYZ", "is-12-abc", "CJ-1-AB"};
for (String n : numere) {
System.out.println(n + " -> " + n.matches("[A-Z]{1,2}-\\d{2,3}-[A-Z]{3}"));
}
}
}
Rezultat
700506 cod poștal valid: true
70050 cod poștal valid: false
7005O6 cod poștal valid: false
IS-12-ABC -> true
B-123-XYZ -> true
is-12-abc -> false
CJ-1-AB -> false
Exemplul 2: Tot șirul, nu o bucată
public class Main {
public static void main(String[] args) {
String s = "comanda123";
System.out.println(s.matches("\\d+"));
System.out.println(s.matches(".*\\d+.*"));
System.out.println(s.matches("[a-z]+\\d+"));
System.out.println("0722123456".matches("07\\d{8}"));
}
}
Rezultat
false
true
true
true
Greșeli frecvente
- Folosești
matchesca să verifici dacă textul conține un tipar. Trebuie potrivit tot șirul; adaugă.*la capete sau foloseșteMatcher.find(). - Scrii
"\d"cu un singur backslash: nu compilează (\dnu este o secvență validă într-un literal Java). Scrie"\\d".
Comenzi înrudite
String.replaceAll: Înlocuiește toate (replaceAll) sau doar prima (replaceFirst) potrivire a unei expresii regulate.String.split: Împarte șirul în bucăți după un separator (expresie regulată) și returnează un array de String.String.contains: Verifică dacă textul dat apare oriunde în șir; comparația ține cont de literele mari și mici.