1. ホーム
  2. regex

複数の文字列のうちの1つを検出する正規表現

2023-09-03 09:30:38

質問

いくつかのドメインに属する電子メールアドレスのリストを持っています。私は3つの特定のドメイン(この例では:foo, bar, & baz)に属するアドレスにマッチする正規表現が欲しいです。

つまり、これらはマッチするでしょう。

  1. a@foo
  2. a@bar
  3. b@baz

これはないでしょう。

  1. a@fnord

理想的には、これらはどちらにも一致しません (ただし、この特定の問題にとっては重要ではありません)。

  1. a@foobar
  2. b@foofoo

問題を少し抽象化します。私は、与えられた部分文字列のリストの少なくとも1つを含む文字列にマッチしたいです。

どのように解決するのか?

パイプ記号で"or"を表します。

/a@(foo|bar|baz)\b/

キャプチャグループが不要な場合は、キャプチャしないグループ化記号を使用します。

/a@(?:foo|bar|baz)\b/

(もちろん、"を想定しています。 a "はメールアドレスの先頭でOK! 適当な正規表現に置き換えてください)