0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

正規表現の簡単なまとめ

Posted at

##正規表現
. ^ $ [] * + ? | ()
特殊文字を使って、複数パターンの数字や文字をカバーする。

##デリミタと修飾子
/[a-z0-9]+/xyz
/をデリミタという。/と/でどの部分をカバーするのか。
言語によってデリミタは異なる。
xyzの部分を修飾子という。デリミタの中に機能を追加する。

##メタ文字
独自の機能を持った文字のことをメタ文字という。
= 文字または数字を1文字分

/orange/ orangeの場合
match → orange
Not match → apple, orbnge, orcnge

/or[abcde]nge/ 3文字目がabcdeいずれかの場合
match → orange, orbnge, orcnge, ordnge
Not match → apple, orznge

##キャロット
^(キャロット) = 直後の文字または数字を指定しない

/or[^abcde]nge/ 3文字目がabcde以外のない場合
match → ×
Not match →  orange, apple, orbnge, orcnge, ordnge, orenge

##ハイフン
-(ハイフン) = 文字数字の範囲を指定する

/or[a-e]nge/ 3文字目がa~eのいずれかの場合
match →  orange, orbnge, orcnge, ordnge, orenge
Not match → apple, orfnge

/or[^a-zA-Z0-9]nge/ 3文字目が小文字のa~z,大文字のA~Z,数字の0~9以外の場合
match → or*nge, or:nge, or(nge

/or[a-zA-Z0-9+^]nge/ ^を指定したい場合は最後に書く
match → or^nge

##バックスラッシュ
(バックスラッシュ) = 直後のメタ文字を単なる文字として扱う

/or[a-zA-Z0-9+^\[]nge/ [を文字として扱う場合
match → o[nge

##ワイルドカード
.(ピリオド) = ワイルドカード。全ての文字が対象。
処理速度を最優先にする場合は使わない方が良い。

/gr.y/ 3文字目は何でも良い場合

##パイプ
|(パイプ) = 左右のどちらかにマッチするか判定する

/lem[ao]m|pe.ch/
match → lemon, peach
not match →  orange, apple

##スペース
正規表現ではスペースもカウントされる。

/lem (on|pe) ach/
match → lem on ach
not match → lemon, peach

##数量詞
繰り返したいパターンの直後

+(プラス) = 1回以上の繰り返し

/be.+y/
match → berry, berrrrry

/<a[^>]+>/ aタグを抽出したい場合

*(アスタリスク) = 0回以上の繰り返し

/be.*y/
match → bey, berry

?(クエスチョンマーク) = 入力なしか1文字のみ

/be.*y/
match → bey, bery
not match → berry

{n} = n回の繰り返し
{n,} = n回以上の繰り返し
{n,m} = n回以上、m回以下の繰り返し

/one.{5}/
match → one step

最長一致(デフォルト)

I have two apples and a banana.
/two.{0,}a/
match → two apples and a banana

最短一致
?(クエスチョンマーク) = 数量詞を最短一致にする

I have two apples and a banana.
/two.{0,}a?/
match → two a

##丸括弧
()(丸括弧) = 正規表現をグループ化する

25.48.8.29
127.0.0.0
0.0.0.0
50.96.38.64
255.255.255.255
158.06.125.83
272.5.260.85
5862.654.384.0

/((25[0-5]|2[0-4][0-9]|[01]?[0-9]{1,2})\.){3}/

##区切り
^ = カバーする範囲の先頭を行頭に指定

$ = カバーする範囲の最後を行末に指定

\b = スペースや改行による単語の区切り
\B = \b以外の区切り

+ 1文字のメタ文字では、大文字にすると機能が逆になる

##ショートコード
[0-9] = \d
[^0-9] = \D
[a-zA-Z0-9_] = \w
[^a-zA-Z0-9_] = \W

\n = 改行
\t = タブ
\r = リターン
\f = 改ページ
[\n\t\r\f ] = \s
[^\n\t\r\f ] = \S

##修飾子

g(global) = マッチする結果全てを抽出

i(case-insensitive) = 大文字と小文字を区別しない

m(multiline) = ^と$の挙動を変え、複数行を対象にする

##日本語
・ひらがな
[ぁ-ん]
[\u3041-\u3096]
[\x{3041}-\x{3096}]

・カタカナ
[ァ-ヶ]
[\u30A1-\u30FA]
[\x{30A1}-\x{30FA}]

・漢字
[亜-熙]
[々〇〻\u3400-\u9FFF\uF900-\uFAFF]|[\uD840-\uD87F][\uDC00-\uDFFF]
[々〇〻\x{3400}-\x{9FFF}\x{F900}-\x{FAFF}]|[\x{D840}-\x{D87F}][\x{DC00}-\x{DFFF}]

・半角文字以外
[^\x01-\x7E]

##電話番号

<form>
 <input type="text" pattern="">
</form>
//pattern属性の中にデリミタを除いた正規表現を書く

フリーダイヤル 0120-(\d{2}-\d{4})|(\d{3}-\d{3}))
市外局番 \d{2,4}-\d{2,4}-\d{4}
携帯番号 (090|080|070)-\d{4}-\d{4}

##URL

<input type="text" pattern="http[s]?:/\/\[\w/%&$#?()=~+-]+">

##メールアドレス

<input type="text" pattern="[\w-]+@([\w-]+\.)+[a-zA-Z]{2,}">

##JavaScriptによる文字検索

var reg = new RegExp(/\d+/);
reg.exe("");
var str ="~~~"
str.match();
0
1
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
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?