🦄

magic-regexpでJSの正規表現を分かりやすく書く

2023/05/24に公開

正規表現のパターンを書くのは常に辛い作業ですが、
magic-regexpというライブラリを使うと簡単に読みやすい正規表現を書くことが出来ます。

https://regexp.dev/

使い慣れるとすごく便利なんですが、最初だけ使い方に慣れるのが難しいので、ここでは具体的な使用例を紹介します。導入の参考になれば幸いです。

改行を削除する

import { anyOf, carriageReturn, createRegExp, linefeed } from 'magic-regexp';

str.replace(
  createRegExp(anyOf(' ', linefeed, carriageReturn), ['g', 'm']),
  ''
);

拡張子がtsまたはjsのファイル名を検索する

import { anyOf, char, createRegExp, oneOrMore } from 'magic-regexp';

const regex = createRegExp(
  oneOrMore(char),
  anyOf('.ts', 'js').at.lineEnd()
);

files.filter(v => regex.test(v));

金額(日本円)の数値とシンボルを取得する

import {
  anyOf,
  createRegExp,
  digit,
  maybe,
  oneOrMore,
} from 'magic-regexp';

const regex = createRegExp(
  oneOrMore(anyOf(digit, ','))
    .and(maybe('.', oneOrMore(digit)))
    .groupedAs('amount'),
  maybe(anyOf('円', '¥', '¥').groupedAs('symbol'))
);

const match = '1,000円'.match(regex);
match?.groups.amount; //=> '1,000'
match?.groups.symbol; //=> '円'

Discussion