RegExp【正規表現:Regular Expression】オブジェクト2015 (6) / 2018 (9) / 2020 (11) ~ 2022 (13)
メモ
概要
基本処理
〔 例 〕- RegExp【正規表現】使用
- String【文字列】使用
- String【文字列】の match【正規表現検索 (詳細)】 ・replace【置換 (正規表現可・関数指定可)】メソッド等で検索・置換・分割
注意事項
- 処理時間のかかる正規表現に注意
- ネスト:(例)
/^([0-9]+)*$/
に対して "9~9#" - 重複:(例)
/(x|xx)+/
- 文字長の制限なし
- ネスト:(例)
外部リンク
- Unicode® Technical Standard #18 UNICODE REGULAR EXPRESSIONS
- Unicode® Technical Standard #51 UNICODE EMOJI
- Unicode® Standard Annex #44 UNICODE CHARACTER DATABASE
- PropertyValueAliases.txt
- ECMA-262 (英語)
RegExp (Regular Expression) Objects ES2024 (15) ES2023 (14) ES2022 (13) Patterns ES2024 (15) ES2023 (14) ES2022 (13) Pattern Semantics ES2024 (15) ES2023 (14) ES2022 (13) Grammar Summary - Regular Expressions ES2024 (15) ES2023 (14) ES2022 (13) Properties of the RegExp Constructor ES2024 (15) ES2023 (14) ES2022 (13) Properties of the RegExp Prototype Object ES2024 (15) ES2023 (14) ES2022 (13) Properties of RegExp Instances ES2024 (15) ES2023 (14) ES2022 (13)
正規表現リテラル・コンストラクタ
構文 | 説明 | 引数 |
---|---|---|
/pattern/ [flags] | 正規表現リテラル | pattern:正規表現パターン flags:検索フラグ |
[new] RegExp ( "pattern" [, "flags" ] ) | コンストラクタ |
プロパティ 一覧〔 例 〕
プロパティ | 説明 | |
---|---|---|
RegExp. | $1 ~ $9 | キャプチャ文字列 (正規表現パターン参照) |
RegExp | [ @@species ] | コンストラクタ定義 (実装:[Symbol.species]) |
RegExp.prototype. | constructor | コンストラクタ定義 |
RegExp.prototype. | dotAll | 's'【改行文字対応】フラグ 使用有無 (true / false) |
RegExp.prototype. | flags | 検索フラグ ("gimsuy" の内で使用している検索フラグの文字列) |
RegExp.prototype. | global | 'g'【グローバル検索】フラグ 使用有無 (true / false) |
RegExp.prototype. | hasIndices | 'd'【キャプチャ部分の範囲インデックス取得】フラグ 使用有無 (true / false) |
RegExp.prototype. | ignoreCase | 'i'【大文字小文字区別なし】フラグ 使用有無 (true / false) |
RegExp. | input ($_) | 検索文字列 |
RegExp. | lastIndex | 次回検索の開始位置 (初期値:0 / 書き込み可能) 'g'【グローバル検索】 または 'y'【検索開始位置固定】フラグ 指定で利用 |
RegExp. | lastMatch ($&) | 最後に一致した文字列 (~.$& は使用不可 → ~["$&"] を使用) |
RegExp. | lastParen ($+) | 最後の括弧内の部分文字列の一致 (~.$+ は使用不可 → ~["$+"] を使用) |
RegExp. | leftContext ($`) | 最後に一致した左側の部分文字列 (~.$` は使用不可 → ~["$`"] を使用) |
RegExp.prototype. | multiline | 'm'【複数行検索】フラグ 使用有無 (true / false) |
RegExp. | prototype | プロトタイプ |
RegExp. | rightContext ($') | 最後に一致した右側の部分文字列 (~.$' は使用不可 → ~["$'"] を使用) |
RegExp.prototype. | source | 正規表現パターン |
RegExp.prototype. | sticky | 'y'【検索開始位置固定】フラグ 使用有無 (true / false) |
RegExp.prototype. | unicode | 'u'【Unicode対応】フラグ 使用有無 (true / false) |
RegExp.prototype. | unicodeSets | 'v'【Unicode対応 (拡張)】フラグ 使用有無 (true / false) |
メソッド 一覧
メソッド | 説明 | |
---|---|---|
RegExp.prototype | [ @@match ] ( string ) | 検索 (詳細) (実装:[Symbol.match]) String.match()【正規表現検索 (詳細)】 から呼び出し 正規表現判定 (Boolean 型):falseの場合、下記メソッドの例外を回避 String.startsWith【開始文字列判定】 String.endsWith【終了文字列判定】 String.includes【部分文字列判定】 |
RegExp.prototype | [ @@matchAll ] ( string ) | 検索 (詳細イテレータ) (実装:[Symbol.matchAll]) String.matchAll()【正規表現検索 (詳細イテレータ)】 から呼び出し |
RegExp.prototype | [ @@replace ] ( string, replaceValue ) | 置換 (関数指定可) (実装:[Symbol.replace]) String.replace()【置換 (正規表現可・関数指定可)】 から呼び出し |
RegExp.prototype | [ @@search ] ( string ) | 検索 (簡易) (実装:[Symbol.search]) String.search()【正規表現検索 (詳細)】 から呼び出し |
RegExp.prototype | [ @@split ] ( string, limit ) | 分割 (実装:[Symbol.split]) String.split()【分割 (正規表現可)】 から呼び出し |
RegExp.prototype. | compile(pattern, flags ) | コンパイル |
RegExp.prototype. | exec( string ) | 検索 |
RegExp.prototype. | test( string ) | 検索評価 |
RegExp.prototype. | toString() | 文字列変換 |
関連オブジェクト・メソッド
正規表現の指定が可能なその他のオブジェクト・メソッド
オブジェクト | メソッド | 説明 |
---|---|---|
String【文字列】オブジェクト | match ( regexp ) | 正規表現検索 (詳細) |
matchAll ( regexp ) | 正規表現検索 (詳細イテレータ) | |
replace ( searchValue, replaceValue ) | 置換 (正規表現可・関数指定可) | |
replaceAll ( searchValue, replaceValue ) | 全置換 (正規表現可・関数指定可) | |
search ( regexp ) | 正規表現検索 (簡易) | |
split ( [separator [, limit]] ) | 分割 (正規表現可) |
検索フラグ
検索フラグ | プロパティ | 説明 |
---|---|---|
d | hasIndices | キャプチャ部分の範囲インデックス取得 (取得結果は、exec【検索】参照) |
g | global | グローバル検索 (lastIndex【次回検索の開始位置】プロパティを使用し、次回の処理に利用) |
i | ignoreCase | 大文字小文字の区別なし |
m | multiline | 複数行の検索 (^:行頭 / $:行末) |
s | dotAll | 改行文字対応 (.【改行以外の 1 文字】に改行を含む) |
u | unicode | Unicode対応 (コードポイント値を使用し、サロゲートペア対応とする) |
v | unicodeSets | Unicode対応 (拡張) 'u'【Unicode対応】フラグ を拡張 ・積集合 対応 ・差集合 対応 ・バイナリ Unicode 文字列プロパティ名 対応 (複数コードポイント文字対応:絵文字の組み合わせ等) ・不備の修正 |
y | sticky | 検索開始位置固定 (lastIndex【次回検索の開始位置】プロパティを開始位置に固定して処理) |
正規表現パターン
正規表現パターン | 説明 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
^ | 先頭 / 'm'【複数行検索】フラグが指定された場合、行頭 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
$ | 末尾 / 'm'【複数行検索】フラグが指定された場合、行末 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
. | 改行以外の 1 文字 ('s'【改行文字対応】フラグ が指定された場合、改行も含む) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
パターン* | パターン の 0 回以上の繰り返し (最長一致) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
パターン*? | パターン の 0 回以上の繰り返し (最短一致) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
パターン+ | パターン の 1 回以上の繰り返し (最長一致) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
パターン+? | パターン の 1 回以上の繰り返し (最短一致) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
パターン? | パターン の 0 回か 1 回 (最長一致) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
パターン?? | パターン の 0 回か 1 回 (最短一致) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
パターン{n} | パターン の n 回の繰り返し (最長一致 / n:正数) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
パターン{n}? | パターン の n 回の繰り返し (最短一致 / n:正数) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
パターン{n,} | パターン の n 回以上の繰り返し (最長一致 / n:正数) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
パターン{n,}? | パターン の n 回以上の繰り返し (最短一致 / n:正数) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
パターン{n,m} | パターン の n 回 ~ m 回の繰り返し (最長一致 / n・m:正数) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
パターン {n,m}? | パターン の n 回 ~ m 回の繰り返し (最短一致 / n・m:正数) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
パターンA|パターンB | パターン を区切り、どちらかの パターン と一致 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
パターンA&&パターンB | 積集合:パターンAかつパターンBのパターン ('v'【Unicode対応 (拡張)】フラグ 指定) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
パターンA--パターンB | 差集合:パターンAからパターンBを除いたパターン ('v'【Unicode対応 (拡張)】フラグ 指定) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
[文字の集合] | 文字の集合 内の文字 (- で範囲指定) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
[^文字の集合] | 文字の集合 内の文字以外 (- で範囲指定) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
(パターン) | 後方参照ありのキャプチャ (後方参照:$1~$9) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
(?:パターン) | 後方参照なしのキャプチャ (後方参照不可) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
(?<キャプチャ名> パターン) | 名前付きキャプチャ (例:exec【検索】の 例 ) 後方参照:\k<キャプチャ名> または \1 ~ \9 メソッド等の参照:$<キャプチャ名> または $1 ~ $9 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
パターン(?=パターン (後)) | 肯定先読み:パターン に パターン (後) が続く | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
パターン(?!パターン (後)) | 否定先読み:パターン に パターン (後) が続かない | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
(?<=パターン (前)) パターン | 肯定後読み:パターン (前) に パターン が続く | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
(?<!パターン (前)) パターン | 否定後読み:パターン (前) でない後に パターン が続く | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
\~ | エスケープシーケンス | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
\1 ~ \9 | キャプチャの後方参照 (名前付きキャプチャも含む) (メソッド等からは $1 ~ $9 で参照) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
\k<キャプチャ名> | 名前付きキャプチャの後方参照 (メソッド等からは $<キャプチャ名> で参照) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
\b | 単語の区切り | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
\B | 単語の区切り以外 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
\d | 数字 ( '[0-9]' に相当 ) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
\D | 数字以外 ( '[^\d]' に相当 ) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
\f | 改ページ (\u000C:form feed) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
\n | 改行 (\u000A:line feed) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
\p{プロパティ名} ※p1 \p{プロパティ値} ※p2 \p{プロパティ名=プロパティ値} ※p3 | ※p1:プロパティ名 を持つ Unicode文字 ※p2:プロパティ値 を持つ Unicode文字 (※p3のプロパティ名省略形) ※p3:プロパティ名 の値が プロパティ値 である Unicode文字 ('u'【Unicode対応】フラグ または 'v'【Unicode対応 (拡張)】フラグ 指定) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
\P{プロパティ名} ※P1 \P{プロパティ値} ※P2 \P{プロパティ名=プロパティ値} ※P3 | ※P1:プロパティ名 を持たない Unicode文字 ※P2:プロパティ値 を持たない Unicode文字 (※P3のプロパティ名省略形) ※P3:プロパティ名 の値が プロパティ値 でない Unicode文字 ('u'【Unicode対応】フラグ または 'v'【Unicode対応 (拡張)】フラグ 指定) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
\r | 復帰 (\u000D:carriage return) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
\s | 空白文字 (下記が対象)
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
\S | 空白文字以外 ( '[^\s]' に相当 ) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
\t | タブ (\u0009:horizontal tab) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
\uHHHH | 16進数定義 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
\v | 垂直タブ (\u000B:vertical tab) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
\w | 文字 (半角英数字 及び アンダースコア(_)) ( '[A-Za-z0-9_]' に相当 ) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
\W | 文字以外 ( '[^\w]' に相当 ) |
パターン:検索位置移動
パターン:検索位置移動なし
プロパティ名一覧
プロパティ値は 外部リンク を参照
プロパティ名・エイリアス | 正規プロパティ名 | 備考 |
---|---|---|
非バイナリ Unicode プロパティ名 | ||
General_Category | General_Category | |
gc | ||
Script | Script | |
sc | ||
Script_Extensions | Script_Extensions | |
scx | ||
バイナリ Unicode プロパティ名 | ||
ASCII | ASCII | |
ASCII_Hex_Digit | ASCII_Hex_Digit | 16 進数 ASCII文字〔参考:Hex_Digit〕 ('0'~'9'・'A'~'F'・'a'~'f') |
AHex | ||
Alphabetic | Alphabetic | 英字 (全角を含む) |
Alpha | ||
Any | Any | |
Assigned | Assigned | |
Bidi_Control | Bidi_Control | |
Bidi_C | ||
Bidi_Mirrored | Bidi_Mirrored | |
Bidi_M | ||
Case_Ignorable | Case_Ignorable | |
CI | ||
Cased | Cased | |
Changes_When_Casefolded | Changes_When_Casefolded | |
CWCF | ||
Changes_When_Casemapped | Changes_When_Casemapped | |
CWCM | ||
Changes_When_Lowercased | Changes_When_Lowercased | |
CWL | ||
Changes_When_NFKC_Casefolded | Changes_When_NFKC_Casefolded | |
CWKCF | ||
Changes_When_Titlecased | Changes_When_Titlecased | |
CWT | ||
Changes_When_Uppercased | Changes_When_Uppercased | |
CWU | ||
Dash | Dash | |
Default_Ignorable_Code_Point | Default_Ignorable_Code_Point | |
DI | ||
Deprecated | Deprecated | |
Dep | ||
Diacritic | Diacritic | |
Dia | ||
Emoji | Emoji | 絵文字 |
Emoji_Component | Emoji_Component | |
EComp | ||
Emoji_Modifier | Emoji_Modifier | |
EMod | ||
Emoji_Modifier_Base | Emoji_Modifier_Base | |
EBase | ||
Emoji_Presentation | Emoji_Presentation | |
EPres | ||
Extended_Pictographic | Extended_Pictographic | |
ExtPict | ||
Extender | Extender | |
Ext | ||
Grapheme_Base | Grapheme_Base | |
Gr_Base | ||
Grapheme_Extend | Grapheme_Extend | |
Gr_Ext | ||
Hex_Digit | Hex_Digit | 16 進数文字 + 互換性の同等文字 (全角など)〔参考:ASCII_Hex_Digit〕 ('0'~'9'・'A'~'F'・'a'~'f'・'0'~'9'・'A'~'F'・'a'~'f') |
Hex | ||
IDS_Binary_Operator | IDS_Binary_Operator | |
IDSB | ||
IDS_Trinary_Operator | IDS_Trinary_Operator | |
IDST | ||
ID_Continue | ID_Continue | |
IDC | ||
ID_Start | ID_Start | |
IDS | ||
Ideographic | Ideographic | |
Ideo | ||
Join_Control | Join_Control | |
Join_C | ||
Logical_Order_Exception | Logical_Order_Exception | |
LOE | ||
Lowercase | Lowercase | |
Lower | ||
Math | Math | |
Noncharacter_Code_Point | Noncharacter_Code_Point | |
NChar | ||
Pattern_Syntax | Pattern_Syntax | |
Pat_Syn | ||
Pattern_White_Space | Pattern_White_Space | |
Pat_WS | ||
Quotation_Mark | Quotation_Mark | 引用符 (「」・"" 等) |
QMark | ||
Radical | Radical | 表意文字 |
Regional_Indicator | Regional_Indicator | |
RI | ||
Sentence_Terminal | Sentence_Terminal | |
STerm | ||
Soft_Dotted | Soft_Dotted | |
SD | ||
Terminal_Punctuation | Terminal_Punctuation | |
Term | ||
Unified_Ideograph | Unified_Ideograph | |
UIdeo | ||
Uppercase | Uppercase | |
Upper | ||
Variation_Selector | Variation_Selector | |
VS | ||
White_Space | White_Space | ホワイトスペース (全角スペースを含む) |
space | ||
XID_Continue | XID_Continue | |
XIDC | ||
XID_Start | XID_Start | |
XIDS | ||
バイナリ Unicode 文字列プロパティ名 ('v'【Unicode対応 (拡張)】フラグ 指定のみ有効) | ||
Basic_Emoji | 基本絵文字セット | |
Emoji_Keycap_Sequence | 絵文字 キーキャップ シーケンス セット | |
RGI_Emoji_Modifier_Sequence | 絵文字 修飾子 シーケンス セット | |
RGI_Emoji_Flag_Sequence | 絵文字 旗 シーケンス セット | |
RGI_Emoji_Tag_Sequence | 絵文字 タグ シーケンス セット | |
RGI_Emoji_ZWJ_Sequence | 絵文字 ZWJ(Zero Width Joiner:ゼロ幅接合子) シーケンス セット | |
RGI_Emoji | 絵文字セット |
正規表現パターン例
検索対象 | 正規表現パターン |
---|---|
数字 | [0-9] |
半角英字 | [A-Za-z] |
半角英大文字 | [A-Z] |
半角英小文字 | [a-z] |
ひらがな | [ぁ-ん] |
全角カタカナ | [ァ-ヴ] |
半角カタカナ | [ヲ-゚] |
改行を含む任意の文字 | [\s\S] . ('s'【改行文字対応】フラグ指定) |
Eメールアドレス※ (HTML 5.1・WHATWG) | /^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/ |
- ※Eメールアドレス
- 正規表現で表すことはほぼ不可能 (コメントが可能等)
- <input>【汎用入力コントロール】のEメールアドレスで定義 (RFC 5322 を意図的に違反)