0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

正規表現について軽くまとめた

Last updated at Posted at 2024-06-24

そもそも正規表現とは

メタ文字とよばれる記号群を利用し、文字、数字などを検索・置換に特化した表現方法
(英語ではregular expressionで、regexと略される)

メタ文字とは

正規表現で特殊な意味を持つ非アルファベット文字
こちらに一覧があります

\d 半角数字1文字
{n,m} 直前の文字が n 文字以上、m 文字以下
{n} 直前の文字がちょうど n 文字
[AB] AまたはBが1文字
[a-z] aからzまでの文字

実例

正規表現を編集できるオンラインエディタが便利

必ず開始と終了に/(バックスラッシュ)が入ります

電話番号(あくまで03-0000-0000など2桁-4桁-4桁の場合)
/\d\d-\d\d\d\d-\d\d\d\d/

郵便番号
/^[0-9]{3}-[0-9]{4}$/

^ は文字列の先頭であること
[0-9]{3} は、0-9までの数字がちょうど3文字
つまり、0〜9の数字3桁から始まることを表す

[0-9]{4}$$は文字列の末尾であることを表す。
つまり、0〜9の数字4桁で終わることを表す

前方一致
^ANNUAL
ANNUALという文字列で始まる

後方一致
RECORD$
RECORDという文字列で終わる

余談ですが、Eメールアドレスともなるとこんな複雑な正規表現になるみたいです。
こんな正規表現を自力で書くのは現実的ではないので、既にあるもので信用できるものを利用しましょう。ここから引用

(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])

正規表現を使って文字列を判定する例

const str = "JAPAN_FOOTBALL_ASSOCIATION"
// 前方一致でJAPAN_という文字列で始まるかを判定する
const matchResult = str.match(/^JAPAN_/)

// 判定した結果、一致する場合に以下のようなデータが返ってくる
0: "JAPAN_"
groups: undefined
index: 0
input: "JAPAN_FOOTBALL_ASSOCIATION"
length: 1

// 存在しない場合は null が返ってくる

まとめ

正規表現を使うときは、検索対象文字列の 「法則(パターン)」 をうまく見つけだすのが大切だそうです。
また学びがあれば追記していきます。

参考サイト
https://developer.mozilla.org/ja/docs/Web/JavaScript/Guide/Regular_expressions
https://qiita.com/jnchito/items/893c887fbf19e17d3ff9

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?