正規表現
参考:
使い方
参考:
JavaScript で正規表現 文字列置換え編 – Qiita
JavaScript で正規表現 エスケープ編 – Qiita
置換 (replace / replaceAll)
replace
:文字列あるいはパターンに一致する箇所を置き換えた文字列を返すreplaceAll
:出現箇所を全て置き換えた文字列を返す/正規表現にはg
フラグが必要
コード例
"My name is Hoge.".replace(/Hoge/, 'John')
Code language: JavaScript (javascript)
参考:
JavaScript で正規表現 文字列置換え編 – Qiita
String.prototype.replace – 正規表現にマッチした文字列を新しい文字列に置換する | Let’s プログラミング
正規表現による文字列置換 | PHP & JavaScript Room
JavaScript で文字列を置換する方法 | UX MILK
JavaScript の replace メソッドを使って様々な置換を試してみよう | TECH PLAY Magazine
JavaScript で文字列を置換するときは replaceAll() を使おうね! | ryokatsu.dev
replace() の使い方/単純な置換と正規表現での置換 | けーちゃんのプログラム開発ノート
replaceAll とは/replace との違い | けーちゃんのプログラム開発ノート
String.prototype.replace() | MDN
String.prototype.replaceAll() | MDN
検査 (test)
文字列に対して正規表現で検査を行い、パターンに合致したかどうかをを真偽値 ( true
/ false
) で返す。
(/hello/i).test("Hello")
Code language: JavaScript (javascript)
参考:
検索 (match)
文字列内で正規表現のパターンに最初に合致する文字列を検索し、合致した文字列を配列に格納して返す。
matches = "https://example.com".match(/https?:\/\/([0-9a-z.]+)/)
domain = matches[1]
Code language: JavaScript (javascript)
g
フラグを付けた場合、パターンに合致する文字列を全て検索し、合致した文字列を配列に格納して返す。
words = "Hello, John.".match(/[a-zA-Z]+/g)
Code language: JavaScript (javascript)
参考:
String.prototype.match() | MDN
メタ文字
参考:
数字や文字、タブなどのマッチのやり方 | SONICMOOV LAB
文字クラス
参考:
文字クラス | 現代の JavaScript チュートリアル
正規表現における文字の指定方法を深める/文字クラス Unicode プロパティエスケープ | @IT
グループ
参考:
先読み/後読み
PATTERN(?=LOOKAHEAD)
:先読み (Lookahead)PATTERN(?!LOOKAHEAD)
:否定先読み (Negative Lookahead)(?<=LOOKBEHIND)PATTERN
:後読み (Lookbehind)(?<!LOOKBEHIND)PATTERN
:否定後読み (Negative Lookbehind)
参考:
先読みと後読み (Lookahead / Lookbehind) | 現代の JavaScript チュートリアル
Lookaheads and Lookbehinds in JavaScript Regular Expressions | Stefan Judis Web Development
Positive lookahead with javascript regex – Stack Overflow
フラグ
g
:グローバルなマッチを行う。最初のマッチの後に止まることなく、全てのマッチを探す。m
:複数行に渡るマッチを行う。先頭および末尾を示すメタ文字 (^
や$
) が複数の行で機能する。i
:大文字小文字を区別せずにマッチを行う。
参考:
Unicode 文字プロパティ
参考:
Unicode:フラグとクラス | 現代の JavaScript チュートリアル
改行にマッチさせる
改行を含む全ての文字にマッチする正規表現は[\s\S]
を使う。
/[\s\S]*/
JavaScript では m
フラグを設定しても .
は改行にマッチしない。次の正規表現は最初の行にのみマッチする。
/.*/m
参考:
JavaScript で改行文字を含めて文字にマッチさせる正規表現 | EasyRamble
JavaScript で改行にもマッチする正規表現 | FFFF
大文字小文字を変換する
参考:
JavaScript で文字列を大文字/小文字に変換する方法を現役エンジニアが解説 | TechAcademy マガジン
how to change uppercase to lowercase with regex javascript – Stack Overflow
replace a Regex capture group with uppercase in Javascript – Stack Overflow
漢字を扱う
参考:
漢字、句読点、記号にマッチする正規表現 | Let’s プログラミング
コメントを記入する
参考:
Commenting Regular Expressions – Stack Overflow
パフォーマンス
参考:
JavaScript の Regex とそれの効率的なコードの書き方 – Qiita
リファレンス
正規表現 (RegExp) | JavaScript 日本語リファレンス (js STUDIO)
まとめ
Javascript による正規表現まとめ | Y’s note
Regular Expression Syntax Cheatsheet | MDN
Tips
JavaScript での正規表現のハマりポイント – Qiita
SCSLRE
「Single-Character Super-Linear RegExps」 (SCSLRE)
超線形計算量を持つパターンを検出するための補助的なライブラリ
リポジトリ:
ドキュメント:
Documentation – SCSLRE | Michael Schmidt
参考:
Regular Expression Denial of Service – ReDoS Software Attack | OWASP