正規表現

参考:

正規表現 | MDN

使い方

参考:

正規表現まとめ – Qiita

JavaScript で正規表現 文字列置換え編 – Qiita

JavaScript で正規表現 エスケープ編 – Qiita

正規表現 | so-zou.jp

置換 (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)

参考:

RegExp.prototype.test() | MDN

正規表現を複数回実行する際の注意点 – Qiita

検索 (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

RegExp.prototype.exec() | MDN

メタ文字

参考:

数字や文字、タブなどのマッチのやり方 | SONICMOOV LAB

文字クラス

参考:

文字クラス – Qiita

文字クラス | 現代の JavaScript チュートリアル

正規表現における文字の指定方法を深める/文字クラス Unicode プロパティエスケープ | @IT

文字クラス | MDN

グループ

参考:

グループと範囲 | MDN

先読み/後読み

  • 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大文字小文字を区別せずにマッチを行う。

参考:

引数 | MDN

Unicode 文字プロパティ

参考:

ユニコード文字プロパティについて | JS.next

Unicodeフラグとクラス | 現代の JavaScript チュートリアル

改行にマッチさせる

改行を含む全ての文字にマッチする正規表現は[\s\S] を使う。

/[\s\S]*/

JavaScript では m フラグを設定しても . は改行にマッチしない。次の正規表現は最初の行にのみマッチする。

/.*/m

参考:

JavaScript で改行文字を含めて文字にマッチさせる正規表現 | EasyRamble

JavaScript で改行にもマッチする正規表現 | FFFF

JavaScript の正規表現で new RegExp(‘[\s\S]’, ‘gm’) して、改行も含めた全ての文字列とマッチさせようとしてもうまくマッチしない | Web エンジニアの LoL 日記

大文字小文字を変換する

参考:

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 | MDN

正規表現 (RegExp) | JavaScript 日本語リファレンス (js STUDIO)

正規表現 (RegExp) | とほほの WWW 入門

まとめ

JavaScript 正規表現まとめ – Qiita

Javascript による正規表現まとめ | Y’s note

Regular Expression Syntax Cheatsheet | MDN

Tips

JavaScript での正規表現のハマりポイント – Qiita

SCSLRE

「Single-Character Super-Linear RegExps」 (SCSLRE)

超線形計算量を持つパターンを検出するための補助的なライブラリ

リポジトリ:

RunDevelopment/scslre: A library to find JS RegExp with super-linear worst-case time complexity for attack strings that repeat a single character – GitHub

ドキュメント:

Documentation – SCSLRE | Michael Schmidt

参考:

Regular Expression Denial of Service – ReDoS Software Attack | OWASP

記事をシェアする:
タグ:

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

Protected by reCAPTCHA