1. HOME
  2. ブログ
  3. IT技術
  4. 【JavaScript】正規表現で文字列を検索する

【JavaScript】正規表現で文字列を検索する

正規表現とは?

正規表現 ( regular expression ) とは、特殊な文字列を組み合わせることで、条件にかなった文字列を表現する方法です。

例えば、郵便番号を正規表現で表す場合

上記の正規表現では、“三桁の数字” + “-“(ハイフン) + “4桁の数字” を表すことになり、郵便番号(012-3456 や 123-4567) と合致します

正規表現はおもに文字列の検索、置換を行うときに使います。

決まったパターンの文字列を一気に検索、置換できるために文字列を操作するときに便利です。

正規表現に使われる特殊記号

正規表現では、特定の記号に特殊な意味が与えられています。主な正規表現について記します。

記号意味例の説明
\エスケープ文字\*‘*'(アスタリスク) とマッチ)
^行の先頭^hello行頭の ‘hello’ とマッチ
$行の末尾world$行末の ‘world’ とマッチ
*直前の文字のゼロ回以上の繰り返しにマッチhello*‘hell’ や ‘hello’, hellooooo とマッチ
+直前の文字の一回以上の繰り返しにマッチhello+‘hello’ や ‘helloooo’ とマッチ
?直前の文字の 0 回か 1 回の出現にマッチhello?‘hell’ と ‘hello’ にマッチ
.改行文字以外の全ての一文字にマッチ.n‘en’ や ‘an’ とマッチ。
{n}直前の文字のちょうど n 回にマッチA{3}‘AAA’ とマッチ
{ m,}直前の文字の m 回以上にマッチA{3,}‘AAA’ や ‘AAAAAAAA’とマッチ。’AA’ とはマッチしない
{ m, n }直前の文字の m 回以上 n 回以上にマッチA{1,3}‘A’, ‘AA’, ‘AAA’ とマッチ
[abc]角括弧で囲まれた文字のいずれか一個にマッチ[xyz]x,y,z のいずれかの文字とマッチ
[a-z]ハイフンを用いることで文字の範囲指定[a-d][abcd] と同じ。a ~ d の文字にマッチ
[^abc]角括弧で囲まれた文字以外の文字にマッチ[^xyz]x,y,z 以外の文字とマッチ。
\s空白文字(スペース、タブ、改行)にマッチ
\w大文字小文字の英字、数字、アンダースコアにマッチ
\W\w でマッチしない文字とマッチ。[^w]と同じ
\d数字とマッチ
\D数字以外とマッチ
\n改行文字(LF, U+000A)とマッチ
\r復帰文字(CR, U+000D) とマッチ
()グループ化

JavaScript で正規表現を使ってみる

もちろん、JavaScript でも正規表現は使用可能です。

JavaScript で正規表現の文字列を表す場合、2つの方法があります。

1:/ (スラッシュ) で囲まれたパターン

「/ (スラッシュ) 」で囲まれたパターンの場合は、正規表現リテラルとして使用する。

スクリプトがロードされたときに、定数の中身(リテラル)として正規表現をコンパイルします。

正規表現のパターンが一定で変化しない場合、こちらのほうがパフォーマンスは良いです。

2:RegExp() のコンストラクタ関数を呼び出す方法

関数実行時にその正規表現をコンパイルします。

正規表現パターンが変化する場合や、ユーザーからの入力などを受けてから正規表現パターンを作成する場合は RegExp() のコンストラクタを使用してください。

オプションについて

正規表現を作成するときにオプションを指定できます。

オプション説明
gグローバルサーチ。文字列全体を検索する。指定しなければ一度検索がヒットすればそこで処理終了
i大文字小文字を区別しない
m複数行検索
uunicode 対応する
s. も改行文字とする

JavaScript で正規表現を使用するメソッド

JavaScript では、正規表現を以下のメソッドとともに使用します。

  1. RegExe ・・・「 test」「  exec」
  2. String ・・・「match」replace」search」split」

RegExp

RegExp オブジェクトから呼び出すメソッド一覧です。

RegExpメソッド説明
exec文字列中で一致するものを検索します。検索結果の配列を返します
test文字列中に一致するものがあるか確かめます。 ture または false を返します

String

String オブジェクトから呼び出すメソッド一覧です。

Stringメソッド説明
match文字列中で一致するものを検索します。検索結果の配列を返します
search文字列中で一致するものがあるか確かめます。マッチした場所の文字位置(インデックス)を返します
replace文字列中で一致するものを検索し、マッチした文字列を別の文字列に置換します。
split正規表現または固定文字列を区切り文字として分割し、分割した結果を文字列の配列として返す

各メソッドの使い方

各メソッドの使い方について簡単に見ていきましょう。

exec

exec メソッドを使うことで、正規表現に合致する文字列を検索できます。

test

test メソッドを使うことで、正規表現に合致する文字列が含まれているか判定することができます。

match

match メソッドを使うことで、正規表現に合致する文字列を検索できます。g オプションが有効の場合、合致する文字列の配列を返します。

search

search メソッドを使うことで、正規表現に合致する文字列が最初にでてきた位置を取得できます。

replace

replace メソッドを使うことで、正規表現に合致する文字列を、別の文字列に置き換えることができます。

split

split メソッドを使うことで、正規表現に合致する文字列を区切り文字として、文字列を分割できます。分割結果が配列として返します。

さいごに

最後に今回の記事の内容をまとめます。

  1. 正規表現とは特殊な文字列を組み合わせることで、条件にかなった文字列を表現する方法
  2. JavaScript でも利用できる
  3. 正規表現の生成方法は正規表現リテラルと RegExp コンストラクタを使う二種類の方法がある
  4. JavaScript の正規表現関連のメソッドを使うことで、文字列の検索、置換、分割ができる

正規表現を使うことで文字列操作を楽に行えるようになります。

正規表現は、現役のエンジニアでも、全て完璧に覚えていない人は多いです!

そのため、こちらの記事を読みながら使いこなせれば問題ないと言えますので、是非この記事をご活用くださいね。

一緒に働いてくれる仲間を募集中!

ライトコードでは、仲間を募集しております!

ライトコードのモットーは「好きなことを仕事にするエンジニア集団」。そのため、あなたがやりたい仕事を全力で応援します。

どうせなら、好きなことを仕事にする方が人生は何倍も素晴らしいものになるはず!また、ライトコードはこれからの会社ですので、みんなで新しい事業や組織を作っていく楽しみもあります。

あなたからのご応募をお待ちしております!

ライトコードでは一緒に働いていただける方を募集しております!
お気軽にご応募ください。

採用情報はこちら

書いた人はこんな人

ライトコードメディア編集部
ライトコードメディア編集部
「好きなことを仕事にするエンジニア集団」の(株)ライトコードのメディア編集部が書いている記事です。

関連記事