RegExp.hasMatch în Dart

hasMatch spune dacă modelul apare în text; stringMatch returnează textul primei potriviri sau null.

Sintaxă
bool hasMatch(String input)
String? stringMatch(String input)

Ce face RegExp.hasMatch

hasMatch(text) returnează true dacă modelul se potrivește undeva în text. Pentru a verifica dacă tot textul respectă modelul (validare), pune ^ la început și $ la sfârșit: RegExp(r'^\d{4}$') acceptă doar exact patru cifre.

stringMatch(text) returnează direct textul primei potriviri, sau null dacă nu există. Este o scurtătură pentru firstMatch(text)?.group(0), utilă când nu ai nevoie de poziții sau grupuri.

Parametri

Parametru Descriere
input Textul în care se caută.

Ce returnează

hasMatch: un bool. stringMatch: un String?.

Exemple

Exemplul 1: Validarea unor câmpuri de formular

void main() {
  final telefon = RegExp(r'^07\d{8}$');
  final codPostal = RegExp(r'^\d{6}$');
  final email = RegExp(r'^[\w.+-]+@[\w-]+\.[\w.]+$');

  for (var t in ['0722123456', '0722 123 456', '021123456']) {
    print('$t: ${telefon.hasMatch(t)}');
  }
  print(codPostal.hasMatch('700506'));
  print(codPostal.hasMatch('Iași 700506'));
  print(email.hasMatch('ana.pop@exemplu.ro'));
  print(email.hasMatch('ana@'));
}

Rezultat

0722123456: true
0722 123 456: false
021123456: false
true
false
true
false

Exemplul 2: Extragerea primei valori cu stringMatch

void main() {
  final pret = RegExp(r'\d+([.,]\d+)?');
  print(pret.stringMatch('Total de plată: 149,90 lei'));
  print(pret.stringMatch('Gratuit'));
  final an = RegExp(r'\b(19|20)\d{2}\b');
  print(an.stringMatch('Născută la Iași în 1998, absolventă în 2021'));
}

Rezultat

149,90
null
1998

Greșeli frecvente

  • Validezi fără ^ și $: RegExp(r'\d{6}').hasMatch('abc1234567') este true, pentru că șase cifre apar undeva în text.

Comenzi înrudite

  • RegExp: O expresie regulată: un model de text cu care cauți, verifici sau înlocuiești bucăți dintr-un text.
  • RegExp.firstMatch: Caută prima potrivire a modelului în text și o returnează cu poziții și grupuri, sau null dacă nu există.
  • String.contains: Verifică dacă textul conține o bucată (contains), începe cu ea (startsWith) sau se termină cu ea (endsWith).