TypeScript:
Att använda reguljära uttryck
Hur man gör:
Låt oss dyka in i TypeScript och se hur regex används för vanliga uppgifter.
// Definiera ett regex-mönster för en e-postadress
const emailPattern = /\S+@\S+\.\S+/;
// Testa om en sträng matchar e-postmönstret
const email = "[email protected]";
console.log(emailPattern.test(email)); // Utdata: true
// Hitta och ersätt siffror i en sträng
const replaceDigits = "Item 25 kostar $30".replace(/\d+/g, '#');
console.log(replaceDigits); // Utdata: "Item # kostar $#"
// Extrahera specifika delar från en sträng med hjälp av fångstgrupper
const data = "April 10, 2021";
const datePattern = /(\w+) (\d+), (\d+)/;
const [, month, day, year] = datePattern.exec(data) || [];
console.log(month, day, year); // Utdata: "April" "10" "2021"
Fördjupning
Tillbaka på 1950-talet beskrev matematikern Stephen Kleene reguljära uttryck som en modell för att representera reguljära språk, vilket senare blev nödvändigt inom datavetenskap. Fram till idag är regex allestädes närvarande i programmering för hantering av text.
Även om regex är en schweizisk armékniv för strängoperationer, är det inte utan alternativ. Beroende på uppgiftens komplexitet kan ibland strängmetoder som includes()
, startsWith()
, endsWith()
, eller till och med tolkning med ett bibliotek vara bättre. Till exempel, att tolka en komplex JSON-sträng med regex kan vara en mardröm—använd en JSON-tolk istället.
När det gäller implementering är regex i JavaScript och TypeScript baserat på ECMAScript-språkspecifikationen. I bakgrunden använder motorer tillståndsmaskiner för att effektivt matcha mönster. Det är värt att notera att regex-operationer kan bli dyra när det gäller prestanda, särskilt med dåligt skrivna mönster—se upp för “katastrofal backtracking”.
Se även
- MDN Web Docs om Reguljära Uttryck: MDN Regular Expressions
- Regex101: Ett verktyg för att testa och felsöka regex-mönster Regex101
- Boken “Mastering Regular Expressions” för djupgående förståelse: O’Reilly