Core > 正規表現まとめ

HTML

<form>
    <textarea id="tarea"></textarea>
</form>

CSS

textarea {
    height: 300px;
    padding: 5px;
    margin: 5px;
}

JavaScript

// 特殊文字はエスケープシーケンスで表す。
// エスケープシーケンスの始まりを表す文字をエスケープ文字という。
// □ エスケープシーケンス
// JavaScriptのエスケープ文字はバックスラッシュ(\)。
// エスケープシーケンス以外の\は無視される。例 \a は 単にa, \c は 単にc。

// 注 \が単独で使われたり文字列の末尾に置かれると構文エラー(unterminated string literal)

// \b バックスペース
// \t (水平)タブ
// \n ラインフィード・改行(New Line)
// \v 垂直タブ
// \f ホームフィード
// \r キャリッジリターン
// \\ バックスラッシュ
// \' シングルクォート
// \" ダブルクォート

// \b, \v, \f, \rは使う場面がわからないので思うので他のエスケープシーケンスだけを試す。

var text;
text = 'abc\n'; // 改行の例
text += '\tdef'; // タブの例 タブのエスケープシーケンス\tに続けてopqrstu
text += '\rghi'; // \rでのmacは改行できる。ただ\nを使うほうが良い
text += '\n\\jkl'; // バックスラッシュ\自体をエスケープ
text += '\n\'mno'; // 'クォート
text += '\n\"pqr'; // '文字列では"はエスケープの必要ないがしても問題はない。
text += '\n\x61'; // Latan- 1のコードポイント a
text += '\n\u0061'; // Unicodeのa
// text += 'stu\'; // 構文エラー
$('#tarea').val(text);




// □ 正規表現オブジェクト(RegEex Object)

// 正規表現オブジェクトは2通りの方法で生成できる。
// 1. RegExpコンストラクタ
// 2. 正規表現リテラル

// 1. RegExpコンストラクタ
var regexp = new RegExp("^\\s+abc\\s+$"); // これではマッチしない

// String.prototype.matchを使ってみる
var text = '\t123'; // 特殊文字タブ123

// 正規表現\sは空白
var pettern1 = '\s.+'; // \sはJavaScriptのエスケープシーケンスではなく単にsとなるのでs.+
// console.log(pettern1)  // s.+
var regexp1 = new RegExp(pettern1); // s.+の正規表現オブジェクト作成
console.log(text.match(regexp1));   // null マッチ失敗

var pettern2 = '\\s.+'; // \\はエスケープシーケンスなので\s.+
// console.log(pettern2); // \s.+
var regexp2 = new RegExp(pettern2); // \s.+
console.log(text.match(regexp2)); // [" 123"]

var pettern3 = '\t.+'; // \tはエスケープシーケンス。特殊文字.+
var regexp3 = new RegExp(pettern3); // 特殊文字タブ.+の正規表現オブジェクトを作成
console.log(text.match(regexp3)); // [" 123"]

var pettern4 = '\\t.+'; // \t.+
var regexp4 = new RegExp(pettern4); // \t.+の正規表現オブジェクト作成
console.log(text.match(regexp4)); // [" 123"]

// 正規表現の\tとJavaScript文字列の\tはたまたま同じなので\tと\\tは同じ結果になる
// 改行を表す\nも同様の動作

var pettern5 = '\d.+'; // d.+
var regexp5 = new RegExp(pettern5); // d.+の正規表現オブジェクト作成
console.log(text.match(regexp5)); // null マッチ失敗

var pettern6 = '\\d.+'; // \d.+
var regexp6 = new RegExp(pettern6); //...