正規表現とは?
正規表現(regular expression)を使うと指定したパターンに一致しているかどうか調べることができます。
RegExpオブジェクトは、RegExpコンストラクタか正規表現リテラルで生成できます。
let reg = new RegExp("abc");
let reg = /abc/;
メタ文字
下の文字は、正規表現では特別な意味をもつ「 メタ文字 」です。
^ $ \ . * + ? ( ) [ ] { } |
メタ文字を正規表現のパターンの中で文字そのものとして扱いたい場合は、頭にバックスラッシュをつけてエスケープします。
メタ文字以外で、エスケープが必要な文字として、/ があります。
test
正規表現に文字列がマッチするかどうかを論理値で返します。
let reg = /javascript/;
console.log(reg.test("javascript")); // true
console.log(reg.test("Javascript")); // false
console.log(reg.test("hello, javascript")); //true
exec
文字列を検索して、マッチした文字列を配列で返します。
マッチした文字列がない場合は、「 null 」を返します。
let reg = /script/;
let result = reg.exec("javascript");
console.log(result);
let result2 = reg.exec("Javascript");
console.log(result2);
let result3 = reg.exec("python Javascript javascript");
console.log(result3);
console.log(result3[0]);
console.log(result3.index);
replace
第1引数に指定された正規表現にマッチする文字列を検索し、第2引数に指定された文字列で置き換えし、置き換えた文字列を返します。
g フラグが指定されていなければ、最初にマッチした文字列だけを返します。
const txt = "javascript html css python java c c# c++";
console.log(txt.replace(/javascript/, "JavaScript")); // JavaScript html css python java c c# c++
console.log(txt.replace(/c/g, "C")); // javasCript html Css python java C C# C++
match
第1引数に指定した正規表現にマッチした部分を順番に配列に格納して返します。
const txt = "list1 list2 list3";
console.log(txt.match(/\d/g));
正規表現の文字クラス
文字クラス
文字クラスは、特定の文字集合の中の任意の1文字を表します。
let reg = /[123]/;
console.log(reg.test("645 大化の改心")); // false
console.log(reg.test("1868~1889 明治維新")); // true
任意の1文字 - 文字クラスの略記号
「 .(ピリオド)」は、改行以外の任意の1文字を表します。
let reg = /t.t/;
console.log(reg.test("txt")); // true
console.log(reg.test("test")); // false
let reg2 = /t..t/;
console.log(reg2.test("txt")); // false
console.log(reg2.test("test")); // true