Ce face RegExp (expresii regulate)
O expresie regulată descrie un model de text: /\d+/ înseamnă „una sau mai multe cifre”. Se scrie între bare oblice sau se creează cu new RegExp("model", "indicatori") când modelul este construit din variabile.
Indicatori frecvenți: g (toate potrivirile), i (fără diferența dintre majuscule și minuscule), m (^ și $ pe fiecare rând), u (Unicode complet, necesar pentru \p{L}), s (punctul potrivește și rândul nou), d (pozițiile grupurilor), v (varianta nouă a lui u).
toString() returnează expresia ca text, cu bare și indicatori. Metoda veche compile este învechită: creează o expresie nouă în loc să o refolosești.
Parametri
| Parametru | Descriere |
|---|---|
model |
Textul modelului (fără barele oblice) sau altă expresie regulată. |
indicatori |
Opțional. Litere precum "gi". |
Ce returnează
Un obiect RegExp.
Exemple
Exemplul 1: Literal și constructor
const cifre = /\d+/g;
const cuvant = "lei";
const pret = new RegExp(`(\\d+) ${cuvant}`, "i");
console.log(cifre.source, cifre.flags);
console.log(pret.toString());
console.log("Cost: 45 LEI".match(pret)[1]);
Rezultat
\d+ g
/(\d+) lei/i
45
Exemplul 2: Litere cu diacritice cu \p{L}
\w recunoaște doar literele englezești. Cu indicatorul u, \p{L} recunoaște orice literă.
const text = "Ștefan și Țuțu";
console.log(text.match(/\w+/g));
console.log(text.match(/\p{L}+/gu));
Rezultat
[ 'tefan', 'i', 'u', 'u' ]
[ 'Ștefan', 'și', 'Țuțu' ]
Exemplul 3: Validarea unui cod poștal românesc
const codPostal = /^\d{6}$/;
for (const valoare of ["700259", "70025", "7002591", "70o259"]) {
console.log(valoare, codPostal.test(valoare));
}
Rezultat
700259 true
70025 false
7002591 false
70o259 false
Greșeli frecvente
- În
new RegExp("\d+")backslash-ul se pierde, pentru că textul îl consumă primul. Scrienew RegExp("\\d+")sau foloseșteString.raw. - Construiești modelul din textul introdus de utilizator fără să escapezi caracterele speciale. Folosește
RegExp.escape(text). - Validezi cu un model fără
^și$:/\d{6}/.test("abc1234567")dătrue.
Comenzi înrudite
RegExp.prototype.test: Verifică dacă un text se potrivește cu o expresie regulată și returnează true sau false.RegExp.prototype.exec: Caută următoarea potrivire a unei expresii regulate și o returnează cu grupuri și poziție.RegExp.escape: Escapează caracterele speciale dintr-un text, ca să poată fi căutat exact într-o expresie regulată.