正規表現リテラル・[new] RegExp【コンストラクタ】
exec【検索】メソッド
test【検索評価】メソッド
toString【文字列変換】メソッド

正規表現リテラル・[new] RegExp【コンストラクタ】

メモ

構文

(1) /pattern/ [ flags ] 【正規表現リテラル】
(2) RegExp ( "pattern" [, "flags" ] )
(3) new RegExp ( "pattern" [, "flags" ] )

  • pattern正規表現パターン
  • flags:検索フラグ (以下の組み合わせ)
    検索フラグ説明
    gglobalグローバル検索 (前回の検索を引継ぎ)
    iignoreCase大文字・小文字の区別なし
    mmultiline複数行検索
    u unicodeUnicode
    y sticky検索開始位置固定

  • RegExp【正規表現】オブジェクト

  • SyntaxError 例外
    • 有効な検索フラグ以外
    • 複数の同じ検索フラグを指定

var regexp1 = /pattern/i;
console.log(Object.prototype.toString.call(regexp1)); // 出力:[object RegExp]
console.log(regexp1.test("ApatternZ")); // 出力:true
console.log(regexp1.test("aPATTERNz")); // 出力:true
console.log(regexp1.test("pat"));       // 出力:false

regexp1 = /pattern/ii;                  // SyntaxError 例外
regexp1 = /pattern/Z;                   // SyntaxError 例外
var regexp2 = RegExp("pattern", "i");
console.log(Object.prototype.toString.call(regexp2)); // 出力:[object RegExp]
console.log(regexp2.test("ApatternZ")); // 出力:true
console.log(regexp2.test("aPATTERNz")); // 出力:true
console.log(regexp2.test("pat"));       // 出力:false

regexp2 = RegExp("pattern", "ii");      // SyntaxError 例外
regexp2 = RegExp("pattern", "Z");       // SyntaxError 例外
var regexp3 = new RegExp("pattern", "i");
console.log(Object.prototype.toString.call(regexp3)); // 出力:[object RegExp]
console.log(regexp3.test("ApatternZ")); // 出力:true
console.log(regexp3.test("aPATTERNz")); // 出力:true
console.log(regexp3.test("pat"));       // 出力:false

regexp3 = new RegExp("pattern", "ii");  // SyntaxError 例外
regexp3 = new RegExp("pattern", "Z");   // SyntaxError 例外

RegExp.prototype.exec【検索】

メモ

構文

exec ( string )

  • 下記プロパティを持つ検索結果配列 (null:一致なし)
    プロパティ説明
    [0]マッチした文字列
    [1] ~ [n]グループ化で保存された部分文字列
    indexマッチ位置 (0~)
    input入力の被検索文字列
    length配列数
  • lastIndex【次回検索の開始位置】プロパティ
    • 'g'(グローバル検索) または 'y'(検索開始位置固定) フラグ指定で、更新 (検索失敗:0 にリセット)

var reg = /[a-z][0-9]/g;
var str = "za1zb2zc3";
var result;
while (result = reg.exec(str)) {
  console.log(result, reg.lastIndex);
}
// 出力:["a1", index: 1, input: "za1zb2zc3"] 3
// 出力:["b2", index: 4, input: "za1zb2zc3"] 6
// 出力:["c3", index: 7, input: "za1zb2zc3"] 9

reg =/([a-z])([0-9])/g;
while (result = reg.exec(str)) {
  console.log(result, reg.lastIndex);
}
// 出力:["a1", "a", "1", index: 1, input: "za1zb2zc3"] 3
// 出力:["b2", "b", "2", index: 4, input: "za1zb2zc3"] 6
// 出力:["c3", "c", "3", index: 7, input: "za1zb2zc3"] 9

RegExp.prototype.test【検索評価】

メモ

  • 簡易な検索

構文

test ( string )

  • string:被検索文字列

  • 一致の有無
    • true:有り
    • false:無し

var reg = /[a-z][0-9]/;
var str = "za1zb2zc3";
console.log(reg.test(str)); // 出力:true

reg = /[A-Z][0-9]/;
console.log(reg.test(str)); // 出力:false

RegExp.prototype.toString【文字列変換】

メモ

  • 文字列 (正規表現リテラル)に変換

構文

toString ()

  • なし

  • 文字列 (正規表現リテラル)

var reg = /[a-z][0-9]/g;
console.log(reg.toString());  // 出力:/[a-z][0-9]/g

reg = new RegExp("[a-z][0-9]", "g");
console.log(reg.toString());  // 出力:/[a-z][0-9]/g

関連