##正規表現
. ^ $ [] * + ? | ()
特殊文字を使って、複数パターンの数字や文字をカバーする。
##デリミタと修飾子
/[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();