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); //...