--- title: 文字クラス slug: Web/JavaScript/Guide/Regular_Expressions/Character_Classes tags: - JavaScript - Reference - RegExp - Regular Expressions translation_of: Web/JavaScript/Guide/Regular_Expressions/Character_Classes ---
{{JSSidebar("JavaScript Guide")}}{{Draft}}
文字クラスは、文字や数字の区別など、文字の種類を区別します。
文字 | 意味 |
---|---|
. |
次のいずれかの意味を持ちます。
複数行フラグ ( ES2018 では |
\d |
あらゆる(アラビア)数字にマッチします。 |
\D |
あらゆる(アラビア)数字以外の文字にマッチします。 |
\w |
アンダースコアを含むあらゆる半角英数字(基本ラテンアルファベット)にマッチします。 |
\W |
前述以外の文字にマッチします。 |
\s |
スペース、タブ、改ページ、改行を含むホワイトスペース文字にマッチします。 |
\S |
ホワイトスペース以外の文字にマッチします。 |
\t |
タブ (U+0009) にマッチします。 |
\r |
復帰文字 (U+000D) にマッチします。 |
\n |
改行文字 (U+000A) にマッチします。 |
\v |
垂直タブ (U+000B) にマッチします。 |
\f |
改ページ (U+000C) にマッチします。 |
[\b] |
後退文字(バックスペース、U+0008)にマッチします。単語境界文字 (\b ) については境界を見てください。 |
\0 |
NULL 文字 (U+0000) にマッチします。この後ろに他の数字を続けてはいけません。\0 の後に(0 から 7 までの)数字が続くと 8 進数のエスケープシーケンスとなるからです。 |
\cX |
|
\xhh |
hh (2 桁の 16 進数)コードからなる文字にマッチします。 |
\uhhhh |
hhhh (4 桁の 16 進数)の値からなる UTF-16 コードユニットにマッチします。 |
\u{hhhh} または \u{hhhhh} |
( |
\ |
次の文字を特別に扱うこと、「エスケープ」することを示します。 その振る舞いは、2 通りのうちのどちらか 1 つです。
この文字を文字通りにマッチさせるには、それ自身をエスケープします。つまり、 |
var randomData = "015 354 8787 687351 3512 8735";
var regexpFourDigits = /\b\d{4}\b/g;
// \b は境界を示します(つまり、単語の真ん中からマッチを開始しません)
// \d{4} は 4 つの数字を示します
// \b は別の境界を示します(つまり、単語の真ん中でマッチが終わりません)
console.table(randomData.match(regexpFourDigits));
// ['8787', '3512', '8735']
var aliceExcerpt = "I’m sure I’m not Ada,’ she said, ‘for her hair goes in such long ringlets, and mine doesn’t go in ringlets at all.";
var regexpWordStartingWithA = /\b[aA]\w+/g;
// \b は境界を示します(つまり、単語の真ん中からマッチを開始しません)
// [aA] は a または A の文字を示します
// \w+ は複数回の *ラテンアルファベットからなる* 任意の文字を示します
console.table(aliceExcerpt.match(regexpWordStartingWithA));
// ['Ada', 'and', 'at', 'all']
単語を表すために、ラテンアルファベットではなく、 Unicode 文字の範囲が使えます。(つまり、ロシア語やアラビア語のような他の言語のテキストを扱えます。) Unicode の 「基本多言語面」には、世界中で使われているほとんどの文字が含まれており、それらの文字で書かれた単語にマッチするための文字クラスと範囲を利用できます。
var nonEnglishText = "Приключения Алисы в Стране чудес";
var regexpBMPWord = /([\u0000-\u0019\u0021-\uFFFF])+/gu;
// U+0000 から U+FFFF までの BMP、ただし、U+0020 は空白
console.table(nonEnglishText.match(regexpBMPWord));
[ 'Приключения', 'Алисы', 'в', 'Стране', 'чудес' ]
Note for MDN editors: please do not try to add funny examples with emoji as those characters are not handled by the platform (Kuma).
仕様書 | 策定状況 | コメント |
---|---|---|
{{SpecName('ESDraft', '#sec-characterclass', 'RegExp: Character classes')}} | {{Spec2('ESDraft')}} |
{{Compat("javascript.builtins.RegExp.character_classes")}}