Ce face String.matches
text matches regex (sau text.matches(regex)) este forma inversă a lui regex.matches(text): returnează true doar dacă întregul text se potrivește cu tiparul. Fiind funcție infix, se poate scrie fără punct și paranteze.
"\\d+".toRegex() creează un Regex dintr-un text, la fel ca Regex("\\d+"). Este util când tiparul vine dintr-o variabilă sau dintr-o configurație. Varianta cu RegexOption adaugă opțiuni, de exemplu ignorarea literelor mari.
Parametri
| Parametru | Descriere |
|---|---|
regex |
Tiparul cu care se compară textul. |
option |
Pentru toRegex: o opțiune, de exemplu RegexOption.IGNORE_CASE. |
Ce returnează
matches: Boolean. toRegex: un Regex.
Exemple
Exemplul 1: Validarea unui cod de înmatriculare
Tiparul cere 1–2 litere mari, 2–3 cifre și 3 litere mari: „IS 12 ABC”, „B 123 XYZ”.
fun main() {
val numar = """[A-Z]{1,2} \d{2,3} [A-Z]{3}""".toRegex()
for (n in listOf("IS 12 ABC", "B 123 XYZ", "is 12 abc", "CJ 1 AB")) {
println("$n: ${n matches numar}")
}
}
Rezultat
IS 12 ABC: true
B 123 XYZ: true
is 12 abc: false
CJ 1 AB: false
Exemplul 2: Tipar din variabilă și opțiuni
Tiparul este construit dintr-un text, iar IGNORE_CASE acceptă și literele mici.
fun main() {
val extensii = listOf("pdf", "docx")
val tipar = (".+\\.(" + extensii.joinToString("|") + ")").toRegex(RegexOption.IGNORE_CASE)
for (f in listOf("cv.pdf", "Contract.DOCX", "poza.jpg")) {
println("$f: ${f.matches(tipar)}")
}
}
Rezultat
cv.pdf: true
Contract.DOCX: true
poza.jpg: false
Exemplul 3: Un e-mail simplu
Un tipar simplificat: caractere fără spații, @, domeniu, punct și extensie.
fun main() {
val email = """[^\s@]+@[^\s@]+\.[a-z]{2,}""".toRegex()
for (e in listOf("ana@exemplu.ro", "ana@exemplu", "ana pop@exemplu.ro")) {
println("$e: ${e matches email}")
}
}
Rezultat
ana@exemplu.ro: true
ana@exemplu: false
ana pop@exemplu.ro: false
Greșeli frecvente
- Scrii
text.matches("\\d+")cu un String, ca în Java. În Kotlin,matchesașteaptă unRegex; adaugă.toRegex(). - Aștepți ca matches să găsească tiparul în interiorul textului. Trebuie să se potrivească tot textul; pentru căutare folosește
Regex.containsMatchIn.
Comenzi înrudite
Regex: Regex este o expresie regulată (un tipar de text); matches verifică tot textul, containsMatchIn caută o bucată.Regex.find: find returnează prima potrivire a tiparului în text (sau null), findAll toate potrivirile; value este textul găsit.String.contains: Verifică dacă un text conține alt text, un caracter sau o potrivire Regex; se poate scrie și cu operatorul in.