JavaScriptの学習・参考リファレンス/ドキュメント

JavaScript、ECMAScriptの学習と参考メモ 入門~初心者~中級者~上級者を目指して

RegExp 正規表現

JavaScripで正規表現を使用方法です。

基本的な使い方

正規表現の宣言

リテラルで書く方法とRegExpを使った方法がある。

let reg1 = /xx*y/i;
let reg2 = new RegExp(/xx*y/, 'i');
let reg3 = new RegExp('xx*y', 'i');

リテラル表記にある2つ目のスラッシュの後の文字、 あるいはRegExpの第2引数は正規表現の振る舞いを変更するフラグです。 以下文字の組み合わせを指定できる。

フラグ 説明
g 全てのマッチする対象を検索
i 大文字小文字を区別しない
m 行単位でのマッチを行う
s 改行文字に.がマッチ
u Unicodコードポイント
y 先頭固定

文字列のマッチ判定 test

const reg = /^\d\d\d\d-\d\d-\d\d$/;
console.log(reg.test('2020-01-01')); // true
console.log(reg.test('2020-3-5')); // false

gと組み合わせて複数回の繰り返しが可能。

const reg = /xy*/g;
const str = 'aaxabdabxyya';

console.log(reg.lastIndex); // 0
console.log(reg.test(str)); // true
console.log(reg.lastIndex); // 3
console.log(reg.test(str)); // true
console.log(reg.lastIndex); // 11
console.log(reg.test(str)); // false
console.log(reg.lastIndex); // 0

置換 replace

const reg = /(\d+)-(\d+)-(\d+)/;
const str = '日付は2012-02-20です';
console.log(str.replace(reg, '$1年$2月$3日')); // "日付は2012年02月20日です"

マッチ結果の取得 exec

const reg = /^(\d\d\d\d)-(\d\d)-(\d\d)$/;
const result = reg.exec('2020-01-01');
console.log(result[0]); // 元の文字
console.log(result[1]); // 最初のマッチ
console.log(result[2]); // 2つ目のマッチ
console.log(result[3]); // 3つ目のマッチ
console.log(result.index); // マッチ位置の先頭
console.log(result.input); // 入力文字列
const reg = /\w+/g;
let result = null;
while ((result = reg.exec('dog cat mouse')) !== null) {
  console.log(`${result[0]}, ${result.index}, ${result.input}`);
  //"dog, 0, dog cat mouse"
  //"cat, 4, dog cat mouse"
  //"mouse, 8, dog cat mouse"
}
作成日 : 2020年06月15日