Säännöllisten lausekkeiden käyttö

TypeScript:
Säännöllisten lausekkeiden käyttö

Kuinka:

Sukelletaan TypeScriptiin ja katsotaan, miten regexiä käytetään yleisiin tehtäviin.

// Määritellään sähköpostiosoitteen regex-malli
const emailPattern = /\S+@\S+\.\S+/;

// Testataan, vastaako merkkijono sähköpostimallia
const email = "[email protected]";
console.log(emailPattern.test(email)); // Tuloste: true

// Etsitään ja korvataan numerot merkkijonosta
const replaceDigits = "Item 25 costs $30".replace(/\d+/g, '#');
console.log(replaceDigits); // Tuloste: "Item # costs $#"

// Tiettyjen osien erottaminen merkkijonosta käyttäen kaappausryhmiä
const data = "April 10, 2021";
const datePattern = /(\w+) (\d+), (\d+)/;
const [, month, day, year] = datePattern.exec(data) || [];
console.log(month, day, year); // Tuloste: "April" "10" "2021"

Syväsukellus

1950-luvulla matemaatikko Stephen Kleene kuvasi säännöllisiä lausekkeita mallina esittämään säännöllisiä kieliä, jotka myöhemmin tulivat oleellisiksi tietojenkäsittelytieteessä. Edetessä regex on kaikkialla ohjelmoinnissa tekstin käsittelyssä.

Vaikka regex on kuin linkkuveitsi merkkijono-operaatioille, ei se ole ilman vaihtoehtoja. Tehtävän monimutkaisuudesta riippuen joskus merkkijonometodit kuten includes(), startsWith(), endsWith() tai jopa jäsentäminen kirjaston avulla voivat olla parempia. Esimerkiksi monimutkaisen JSON-merkkijonon jäsentäminen regexin avulla voi olla painajainen – käytä sen sijaan JSON-jäsentäjää.

Toteutukseen liittyen, regex JavaScriptissä ja TypeScriptissä perustuu ECMAScript-kielispesifikaatioon. Kulissien takana moottorit käyttävät tilakoneita tehokkaaseen mallien vastaavuuteen. On huomionarvoista, että regex-operaatiot voivat olla kalliita suorituskyvyn kannalta, erityisesti huonosti kirjoitettujen mallien kanssa – varo “katastrofaalista takaisinkytkentää”.

Katso Myös