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
- MDN Web Docs säännöllisistä lausekkeista: MDN Säännölliset Lausekkeet
- Regex101: Työkalu testata ja debugata regex-malleja Regex101
- “Mastering Regular Expressions” -kirja syvälliseen ymmärrykseen: O’Reilly