正規表現とは、文字列の検索や置換に使用されます。正規表現では様々なパターンを表現する事ができ、それを用いる事でテキストの中から特定のパターンの文字列を検索・抽出・置換等の操作をする事ができます。
正規表現一覧
主な正規表現を紹介します。
メンバー | 説明 |
.(ドット) | 任意の1文字と一致します。(改行を除く) |
^(キャレット) | 文字列の先頭に一致します。 |
$(ドル) | 文字列の末尾に一致します。 |
*(アスタリスク) | 直前の文字が0回以上繰り返される部分に一致します。 |
+(プラス) | 直前の文字が1回以上繰り返される部分に一致します。 |
?(クエスチョンマーク) | 直前の文字が0回または1回繰り返される部分に一致します。 |
{n}(中括弧) | 直前の文字がちょうどn回繰り返される部分に一致します。 |
{n,} | 直前の文字がn回以上繰り返される部分に一致します。 |
{n,m} | 直前の文字がn回からm回の間繰り返される部分に一致します。 |
(角括弧) | 角括弧内のいずれか1文字に一致します。 |
[^] | 角括弧内に含まれない任意の1文字に一致します。 |
\(バックスラッシュ) | メタ文字をエスケープする際に使用します。また、特定のシーケンスとして使用される場合もあります。(例: \d は数字に一致) |
\d | 数字に一致します。 |
\D | 数字以外の任意の文字に一致します。 |
\w | 英数字やアンダースコアに一致します。 |
\W | 英数字やアンダースコア以外の任意の文字に一致します。 |
\s | 空白文字に一致します。(スペース、タブ、改行など) |
\S | 空白文字以外の任意の文字に一致します。 |
|(パイプ) | 選択肢のいずれかに一致します。(論理和) |
()(丸括弧) | 部分文字列をグループ化します。また、キャプチャグループとして使用されます。 |
\b | 単語の境界に一致します。 |
\B | 単語の境界以外に一致します。 |
プログラミング例
具体的なプログラミング例を紹介します。
.(ドット)
function ドット例() {
let テキスト = "a1b2c3";
let パターン = /./g;
let 結果 = テキスト.match(パターン);
console.log(結果); // ["a", "1", "b", "2", "c", "3"]
}
let テキスト = "a1b2c3";
let パターン = /./g;
let 結果 = テキスト.match(パターン);
console.log(結果); // ["a", "1", "b", "2", "c", "3"]
}
^(キャレット)
function キャレット例() {
let テキスト = "Hello world";
let パターン = /^Hello/;
let 結果 = パターン.test(テキスト);
console.log(結果); // true
}
let テキスト = "Hello world";
let パターン = /^Hello/;
let 結果 = パターン.test(テキスト);
console.log(結果); // true
}
$(ドル)
function ドル例() {
let テキスト = "Hello world";
let パターン = /world$/;
let 結果 = パターン.test(テキスト);
console.log(結果); // true
}
let テキスト = "Hello world";
let パターン = /world$/;
let 結果 = パターン.test(テキスト);
console.log(結果); // true
}
*(アスタリスク)
function アスタリスク例() {
let テキスト = "aaabbb";
let パターン = /a*b*/g;
let 結果 = テキスト.match(パターン);
console.log(結果); // ["aaabbb"]
}
let テキスト = "aaabbb";
let パターン = /a*b*/g;
let 結果 = テキスト.match(パターン);
console.log(結果); // ["aaabbb"]
}
+(プラス)
function プラス例() {
let テキスト = "aaabbb";
let パターン = /a+b+/g;
let 結果 = テキスト.match(パターン);
console.log(結果); // ["aaabbb"]
}
let テキスト = "aaabbb";
let パターン = /a+b+/g;
let 結果 = テキスト.match(パターン);
console.log(結果); // ["aaabbb"]
}
?(クエスチョンマーク)
function クエスチョンマーク例() {
let テキスト = "color";
let パターン = /colou?r/;
let 結果 = パターン.test(テキスト);
console.log(結果); // true
}
let テキスト = "color";
let パターン = /colou?r/;
let 結果 = パターン.test(テキスト);
console.log(結果); // true
}
{n}(中括弧)
function 中括弧n例() {
let テキスト = "aaabbb";
let パターン = /a{3}/;
let 結果 = パターン.test(テキスト);
console.log(結果); // true
}
let テキスト = "aaabbb";
let パターン = /a{3}/;
let 結果 = パターン.test(テキスト);
console.log(結果); // true
}
{n,}(中括弧,)
function 中括弧nカンマ例() {
let テキスト = "aaa";
let パターン = /a{2,}/;
let 結果 = パターン.test(テキスト);
console.log(結果); // true
}
let テキスト = "aaa";
let パターン = /a{2,}/;
let 結果 = パターン.test(テキスト);
console.log(結果); // true
}
{n,m}(中括弧n,m)
function 中括弧nm例() {
let テキスト = "aaab";
let パターン = /a{2,3}/;
let 結果 = テキスト.match(パターン);
console.log(結果); // ["aaa"]
}
let テキスト = "aaab";
let パターン = /a{2,3}/;
let 結果 = テキスト.match(パターン);
console.log(結果); // ["aaa"]
}
(角括弧)
function 角括弧例() {
let テキスト = "abc123";
let パターン = /[a-c]/g;
let 結果 = テキスト.match(パターン);
console.log(結果); // ["a", "b", "c"]
}
let テキスト = "abc123";
let パターン = /[a-c]/g;
let 結果 = テキスト.match(パターン);
console.log(結果); // ["a", "b", "c"]
}
[^](否定角括弧)
function 否定角括弧例() {
let テキスト = "abc123";
let パターン = /[^a-c]/g;
let 結果 = テキスト.match(パターン);
console.log(結果); // ["1", "2", "3"]
}
let テキスト = "abc123";
let パターン = /[^a-c]/g;
let 結果 = テキスト.match(パターン);
console.log(結果); // ["1", "2", "3"]
}
\(バックスラッシュ)
function バックスラッシュ例() {
let テキスト = "1+1=2";
let パターン = /\+/;
let 結果 = テキスト.match(パターン);
console.log(結果); // ["+"]
}
let テキスト = "1+1=2";
let パターン = /\+/;
let 結果 = テキスト.match(パターン);
console.log(結果); // ["+"]
}
\d
function 数字例() {
let テキスト = "abc123";
let パターン = /\d/g;
let 結果 = テキスト.match(パターン);
console.log(結果); // ["1", "2", "3"]
}
let テキスト = "abc123";
let パターン = /\d/g;
let 結果 = テキスト.match(パターン);
console.log(結果); // ["1", "2", "3"]
}
\D
function 数字以外例() {
let テキスト = "abc123";
let パターン = /\D/g;
let 結果 = テキスト.match(パターン);
console.log(結果); // ["a", "b", "c"]
}
let テキスト = "abc123";
let パターン = /\D/g;
let 結果 = テキスト.match(パターン);
console.log(結果); // ["a", "b", "c"]
}
\w
function 英数字例() {
let テキスト = "abc_123";
let パターン = /\w/g;
let 結果 = テキスト.match(パターン);
console.log(結果); // ["a", "b", "c", "_", "1", "2", "3"]
}
let テキスト = "abc_123";
let パターン = /\w/g;
let 結果 = テキスト.match(パターン);
console.log(結果); // ["a", "b", "c", "_", "1", "2", "3"]
}
\W
function 英数字以外例() {
let テキスト = "abc_123!";
let パターン = /\W/g;
let 結果 = テキスト.match(パターン);
console.log(結果); // ["!"]
}
let テキスト = "abc_123!";
let パターン = /\W/g;
let 結果 = テキスト.match(パターン);
console.log(結果); // ["!"]
}
\s
function 空白文字例() {
let テキスト = "a b c";
let パターン = /\s/g;
let 結果 = テキスト.match(パターン);
console.log(結果); // [" ", " "]
}
let テキスト = "a b c";
let パターン = /\s/g;
let 結果 = テキスト.match(パターン);
console.log(結果); // [" ", " "]
}
\S
function 空白以外例() {
let テキスト = "a b c";
let パターン = /\S/g;
let 結果 = テキスト.match(パターン);
console.log(結果); // ["a", "b", "c"]
}
let テキスト = "a b c";
let パターン = /\S/g;
let 結果 = テキスト.match(パターン);
console.log(結果); // ["a", "b", "c"]
}
|(パイプ)
function パイプ例() {
let テキスト = "abc";
let パターン = /a|b|c/g;
let 結果 = テキスト.match(パターン);
console.log(結果); // ["a", "b", "c"]
}
let テキスト = "abc";
let パターン = /a|b|c/g;
let 結果 = テキスト.match(パターン);
console.log(結果); // ["a", "b", "c"]
}
()(丸括弧)
function 丸括弧例() {
let テキスト = "abc123";
let パターン = /(abc)(123)/;
let 結果 = テキスト.match(パターン);
console.log(結果); // ["abc123", "abc", "123"]
}
let テキスト = "abc123";
let パターン = /(abc)(123)/;
let 結果 = テキスト.match(パターン);
console.log(結果); // ["abc123", "abc", "123"]
}
\b
function 単語境界例() {
let テキスト = "hello world";
let パターン = /\bworld\b/;
let 結果 = パターン.test(テキスト);
console.log(結果); // true
}
let テキスト = "hello world";
let パターン = /\bworld\b/;
let 結果 = パターン.test(テキスト);
console.log(結果); // true
}
\B
function 非単語境界例() {
let テキスト = "hello world";
let パターン = /\Bworld\B/;
let 結果 = パターン.test(テキスト);
console.log(結果); // false
}
let テキスト = "hello world";
let パターン = /\Bworld\B/;
let 結果 = パターン.test(テキスト);
console.log(結果); // false
}
まとめ
正規表現は、文字列のパターン検索や置換に非常に便利です。フラグを組み合わせることで、より高度な検索が可能になります。