JS 正規表現で使えるメソッドの基本的な使い方

JS 正規表現のメソッド Java Script
スポンサーリンク

今回は、正規表現で使用出来るメソッドについてご紹介させて頂きます。

フラグと組み合わせて使うことにより、様々なパターンの結果を得ることが出来ますので、それぞれの違いをしっかりと学んでおきましょう。

スポンサーリンク

exec メソッド

基本

exec()」は、指定された文字列内で一致するものを取得します。

regexp.exec(文字列)

let reg1 = /19\d{2}-\d{2}-\d{2}/;

let newReg = reg1.exec('My birthday is 1991-01-01');

console.log(newReg[0]);
1991-01-01

パターンにマッチした配列が返されています。

let sample = new RegExp(/20\d{2}-\d{2}-\d{2}/);

let reg1 = sample.exec('Today is 2022-05-05');

console.log(reg1[0]);
 2022-05-05

「RegExp」を使うとこのようなコードになります。

キャプチャグループ

パターンの中の一部を、「()」で囲ったグループを「キャプチャグループ」と言います。

execメソッドを例に見てみましょう。

let reg1 = /(19\d{2})-(\d{2})-(\d{2})/;
let newReg = reg1.exec('My birthday is 1991-01-01');

console.log('キャプチャ0 : ' + newReg[0]);
console.log('キャプチャ1 : ' + newReg[1]);
console.log('キャプチャ2 : ' + newReg[2]);
console.log('キャプチャ3 : ' + newReg[3]);
 キャプチャ0 : 1991-01-01
 キャプチャ1 : 1991
 キャプチャ2 : 01
 キャプチャ3 : 01

配列のインデックスの番号と、実際のコードの場所を確認してください。

let reg1 = /(?<year>19\d{2})-(?<month>\d{2})-(?<day>\d{2})/;
let newReg = reg1.exec('My birthday is 1991-01-01');

let year = newReg.groups.year;
let month = newReg.groups.month;
let day = newReg.groups.day;

console.log(year + '年' + month + '月' + day + '日');
 1991年01月01日

キャプチャーグループには名前を付けることが出来ます。

(?<>)」の形で記述します。

execメソッドは、「gフラグ」を使わない限り、下でご紹介する、matchメソッドと同じ動作をします。

test メソッド

testメソッドは、前回ご紹介しておりますが、改めて以下をご確認ください。

let fruits = '私はぶどうといちごが大好きです。';
let reg1 = /ぶどう/;
let reg2 = new RegExp('いちご');
let reg3 = new RegExp(/みかん/);

console.log(reg1.test(fruits));
console.log(reg2.test(fruits));
console.log(reg3.test(fruits));
 true
 true
false

マッチする場合は、「true」を、マッチしない場合は「false」を返します。

match メソッド

基本

matchメソッドは、マッチした文字列を取得します。

let reg = /19\d{2}-\d{2}-\d{2}/;
let str1 = 'My birthday is 1980-02-02';

let str2 = str1.match(reg);

console.log(str2[0]);
 1980-02-02

マッチしたものと追加のプロパティ、「index」と「input」を持つ配列です。

let sample = '私はフルーツの中で、バナナとりんごが大好きです。';
let resulet = sample.match(/フルーツ/);

console.log(resulet[0]);
フルーツ
console.log(resulet.index);
2
console.log(resulet.input);
私はフルーツの中で、バナナとりんごが大好きです。

gフラグ

gフラグを設定すると、マッチしたすべての文字列の配列を返します。

プロパティはありません。

let hell = 'HELLO - Hello - hello';
let result1 = hell.match(/hello/);

console.log(result1);
['hello', index: 16, input: 'HELLO - Hello - hello']

gフラグがない場合です。

let hell = 'HELLO - Hello - hello';
let result3 = hell.match(/hello/ig);

console.log(result3);
 ['HELLO', 'Hello', 'hello']
0: "HELLO"
1: "Hello"
2: "hello"
length: 3

gフラグと大文字小文字の区別をしないiフラグを一緒に設定しています。

マッチした文字列の配列が返されています。

マッチした文字列の情報を取得するには、「execメソッド」を使います。

let hell = 'HELLO - Hello - hello';
let reg = /hello/ig;

let regMatch1 = reg.exec(hell);
console.log(regmatch1);
['HELLO', index: 0, input: 'HELLO - Hello - hello', groups: undefined]

let regMatch2 = reg.exec(hell);
console.log(regMatch2);
['Hello', index: 8, input: 'HELLO - Hello - hello', groups: undefined]

let regMatch3 = reg.exec(hell);
console.log(regMatch3);
['hello', index: 16, input: 'HELLO - Hello - hello', groups: undefined]

search メソッド

searchメソッドは、マッチした最初の文字のインデックスを返します。

let hell = 'HELLO - Hello - hello';
console.log(hell.search(/h/));
 16

最初の「h」のインデックスを返しています。

let hell = 'HELLO - Hello - hello';
console.log(hell.search(/h/i));
 0

iフラグを設定すると最初の「H」、「0」を返します。

split

splitメソッドは、指定の文字で文字列を分割します。

let split = '090-1234-5678';

console.log(split.split(/-/));
 (3) ['090', '1234', '5678']

「-」で文字列を区切っています。

なお、すでに学習した文字列メソッドの「split関数」でも同じ結果を得ることが出来ますが、正規表現を使用した方が、幅広い分割の方法に対応することが出来ます。

console.log(split.split('-'));
 (3) ['090', '1234', '5678']

replace メソッド

基本

replaceメソッドは、指定した文字列を置換することが出来ます。

replace(置換する文字列, 新しい文字列)

let split = '090-1234-5678';

console.log(split.replace('090', '080'));
 080-1234-5678

「090」を「080」に置換しています。

置換する文字列に正規表現を指定することも出来ます。

console.log(split.replace(/-/g, ''));
 09012345678

「-」を削除しています。

置換のための文字列

正規表現を使って置換する場合に、特別な文字列を使用することが出来ます。

記号意味
$$$
$&マッチした文字列
$`マッチした文字列の
前の文字列
$’マッチした文字列の
後の文字列
$nキャプチャーグループの番号をnに指定
let play = 'I play tennis. I play basketball. I play swimming.';

console.log(play.replace(/I/g, 'You and $&'));
 You and I play tennis. You and I play basketball. You and I play swimming.
スポンサーリンク

あとがき

沢山のメソッドを簡単にご紹介させて頂きましたが、実際に使用する際は、もう少し複雑な組み合わせで使用することが多いと思います。

初めて学習される方は、とにかく基本的な使い方をしっかりと抑えておきましょう。

今回も最後までお読み頂きありがとうございました。

タイトルとURLをコピーしました