String.matches în Java

Verifică dacă ÎNTREGUL șir se potrivește cu o expresie regulată (validare de formate).

Sintaxă
boolean matches(String regex)

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 matches ca să verifici dacă textul conține un tipar. Trebuie potrivit tot șirul; adaugă .* la capete sau folosește Matcher.find().
  • Scrii "\d" cu un singur backslash: nu compilează (\d nu 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.