Start · Sprachen · JavaScript · Snippets · Regex — Match und Ersetzen

Regex — Match und Ersetzen

Reguläre Ausdrücke

Treffer samt benannten Gruppen und Position per matchAll auslesen, per Callback ersetzen und Benutzereingaben sicher escapen, bevor man sie als RegExp nutzt.

Code

// TT.MM.JJJJ mit benannten Gruppen
const DATE_RE = /(?<d>\d{2})\.(?<m>\d{2})\.(?<y>\d{4})/g;

// Alle Treffer mit Gruppen und Index
const findDates = (text) =>
  [...text.matchAll(DATE_RE)].map(({ groups, index }) => ({ ...groups, index }));

// Ersetzen per Callback: TT.MM.JJJJ -> JJJJ-MM-TT
const toIsoDates = (text) =>
  text.replace(DATE_RE, (_, d, m, y) => `${y}-${m}-${d}`);

// Nutzereingabe als Literal suchen (Sonderzeichen escapen)
const escapeRegex = (s) => s.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
// Callback verhindert, dass $& / $1 im Ersatztext interpretiert werden
const replaceLiteral = (text, search, repl) =>
  text.replace(new RegExp(escapeRegex(search), 'gi'), () => repl);

const txt = 'Start 01.03.2024, Ende 15.04.2024 (Preis: 9.99$)';
console.log(findDates(txt));
console.log(toIsoDates(txt));
console.log(replaceLiteral(txt, '9.99$', '12,50 €'));
[ { d: '01', m: '03', y: '2024', index: 6 }, { d: '15', m: '04', y: '2024', index: 23 } ] Start 2024-03-01, Ende 2024-04-15 (Preis: 9.99$) Start 01.03.2024, Ende 15.04.2024 (Preis: 12,50 €)