モジュール 7 · レッスン 3 / 4コース内の 27/32~12 min
モジュールのレッスン (3/4)
コールバックに置き換える
置換文字列が十分でない場合は、関数を渡します。
str.replace(regex, (match, ...groups) => string)。コールバックが呼び出されます
すべての一致に対して、その戻り値が置換になります。
JS
'prezzi: 10 20 30'.replace(/\d+/g, (m) => Number(m) * 1.22);
// "prezzi: 12.2 24.4 36.6" (22% VAT)コールバック引数
JS
str.replace(regex, (match, p1, p2, ..., offset, original, groups) => ...);match-- 一致全体。p1、p2、\u2026 -- キャプチャされたグループの順序。offset-- 元の文字列内の一致のインデックス。original-- 文字列全体。groups-- 名前付きグループ (存在する場合) を持つオブジェクト。
JS
'2024-03-15'.replace(/(\d{4})-(\d{2})-(\d{2})/, (_, a, m, g) => `${g}/${m}/${a}`);
// "15/03/2024"コールバックは、任意の機能を提供します: 解析、検索、変換、HTML 静的文字列では実行できないすべてのことをエスケープします。
replace コールバックの高度な引数
コールバック関数は、完全一致、キャプチャされた各グループ、テキスト全体内の一致のオフセット、元の入力文字列など、いくつかの引数を受け取ります。これにより、高度なコンテキストベースの変換ロジックが可能になります。
試してみてください
運動#regex.m7.l3.e1
試行回数: 0読み込み中…
テキスト内のすべての整数を検索します。 (置換では `(m) => Number(m) * 2` を渡して 2 倍にします。)
エディターを読み込み中…
ヒントを表示
すべての整数を単一の一致としてキャプチャするには、\\d+ (1 つ以上の数字) を使用します。
3 回の試行後に解決策が利用可能になります
復習演習
運動#regex.m7.l3.e2
試行回数: 0読み込み中…
すべてのメールを検索します (簡略化された形式: 文字/数字/ドット/アンダースコア @ ドメイン)。このようにして、コールバックはそれを「***@domain」に編集できます。
エディターを読み込み中…
ヒントを表示
ユーザー名とドメインでドットを受け入れるには、クラスを [\\w.]+ に拡張します。
3 回の試行後に解決策が利用可能になります
追加の課題
運動#regex.m7.l3.e3
試行回数: 0読み込み中…
Match every word consisting of letters in the text, so it can be transformed to uppercase via a callback.
エディターを読み込み中…
ヒントを表示
[a-zA-Z]+ で単純な文字を検索します。
3 回の試行後に解決策が利用可能になります