こんにちはフロントエンドエンジニアのまさにょんです!
今回は、JavaScriptで正規表現をtestして完全一致・部分一致・前方一致・後方一致を判定する方法について解説していきます。
目次
testメソッドで完全一致・部分一致・前方一致・後方一致を判定する
test()
は、正規表現と指定された文字列の一致を調べるための検索を実行します。
実行結果として、真偽値(true
orfalse
)を返すので、パターンに一致するかを調べて、条件分岐するのに役立ちます。
1つのパターン(正規表現)との「完全一致」を判定する
1つのパターン(正規表現)との完全一致を判定するには、^(先頭が一致)と $(末尾が一致)を使用します。
const robotama = 'ロボ玉';
const check_1 = /^ロボ玉$/.test(robotama);
console.log({check_1});
// {check_1: true}
const check_2 = /^ロボ$/.test(robotama);
console.log({check_2});
// {check_2: false}
複数のパターン(正規表現)との「完全一致」を判定する
複数のパターン(正規表現)との完全一致を判定するには、() で文字列を囲って | で区分けします。
const hakutou = '白桃さん';
const tama = 'ロボ玉';
function CatCheck (param) {
if ( /^(ももちゃん|白桃さん)$/.test(param) ) console.log(`${param}は、猫なのだ!`);
else console.log(`${param}は、猫じゃないのだ!`);
}
CatCheck(hakutou); // 白桃さんは、猫なのだ!
CatCheck(tama); // ロボ玉は、猫じゃないのだ!
1つのパターン(正規表現)との「部分一致」を判定する
完全一致の逆の考え方で、部分一致は文字列の中に該当パターンが部分的にあればOKです。
なので、^ と $ を取るだけで、部分一致は判定できます。
const ham = 'ぷるぷるロボ玉なのだ!';
/ロボ/.test(ham) ? console.log('ロボあり!') : console.log('ロボなし!');
// ロボあり!
複数のパターン(正規表現)との「部分一致」を判定する
複数のパターン(正規表現)との部分一致を判定するには、文字列を | で区分けするだけでOKです。
let searchList = ['東京', '北海道', '京都'];
searchList.forEach(str => /東京|京都|福岡/.test(str) ? console.log(`${str}は、パターンにあり!`) : console.log(`${str}は、パターンになし!`));
// 東京は、パターンにあり!
// 北海道は、パターンになし!
// 京都は、パターンにあり!
1つのパターン(正規表現)との「前方一致」を判定する
前方一致を判定したい場合は、先頭に ^ を付与して先頭から一致するかで判定します。
前方一致なので、末尾に $ はつけません。
let hamtaro = 'ハム太郎';
let hamTitle = 'とっとこハム太郎';
/^ハム/.test(hamtaro) ? console.log('ハムなのだ!') : console.log('ハムじゃないのだ!');
// ハムなのだ!
/^ハム/.test(hamTitle) ? console.log('ハムなのだ!') : console.log('ハムじゃないのだ!');
// ハムじゃないのだ!
複数のパターン(正規表現)との「前方一致」を判定する
let robo = 'ロボ玉';
let tamatama = 'たま玉';
let purutama = 'ぷるたま';
function RobotamaJudge (str) {
(/^(ロボ|玉|ぷる)/).test(str) ? console.log('ロボ玉なのだ!') : console.log('ロボ玉じゃないのだ!');
}
RobotamaJudge(robo); // ロボ玉なのだ!
RobotamaJudge(tamatama); // ロボ玉じゃないのだ!
RobotamaJudge(purutama); // ロボ玉なのだ!
1つのパターン(正規表現)との「後方一致」を判定する
後方一致を判定したい場合は、末尾に $ を付与して後方から一致するかで判定します。
後方一致なので、先頭に ^ はつけません。
let momo = '桃太郎と子分たち';
let taro = 'ぽむ太郎';
/太郎$/.test(momo) ? console.log('太郎なのだ!') : console.log('太郎じゃないのだ!');
// 太郎じゃないのだ!
/太郎$/.test(taro) ? console.log('太郎なのだ!') : console.log('太郎じゃないのだ!');
// 太郎なのだ!
複数のパターン(正規表現)との「後方一致」を判定する
let robo = 'ロボ玉';
let tamatama = 'たま玉';
let purutama = 'ぷるたま';
function RobotamaJudge (str) {
(/(ロボ|玉|ぷる)$/).test(str) ? console.log('ロボ玉なのだ!') : console.log('ロボ玉じゃないのだ!');
}
RobotamaJudge(robo); // ロボ玉なのだ!
RobotamaJudge(tamatama); // ロボ玉なのだ!
RobotamaJudge(purutama); // ロボ玉じゃないのだ!
パターン(正規表現)が大文字小文字どちらでも一致させる
正規表現のオプションである i をつけるだけでOKです。
let gunmar = 'gunmar';
let GUNMAR = 'GUNMAR';
function GunmarJudge (str) {
// 1. i オプションを付与する
if (/gunmar/i.test(str)) console.log('グンマー帝国、万歳!');
else console.log('さいたまー共和国、駆逐してやる!');
}
GunmarJudge(gunmar); // グンマー帝国、万歳!
GunmarJudge(GUNMAR); // グンマー帝国、万歳!
JavaScript書籍 Ver. 中級-上級者向け
JavaScript書籍 Ver. 初級者向け
Twitterやってます!Follow Me!
神聖グンマー帝国の逆襲🔥
神聖グンマー帝国の科学は、世界一ぃぃぃぃぃぃ!!!!!