技術コンテンツ

【JavaScript】正規表現 - 文字列のパターン表現と検索

【JavaScript】正規表現 - 文字列のパターン表現と検索

JavaScriptの正規表現について解説します。

検証環境

正規表現

正規表現は“文字列をパターン化して表現する記法”です。

パターンに一致する文字列の検索などに使います。

JavaScriptではRegExpオブジェクトやStringオブジェクトなど正規表現に関するオブジェクトやメソッドが標準で用意されています。

それらのメソッドを使うことで簡単に正規表現を扱うことが可能です。

※ 正規表現の基礎は次のドキュメントで解説しておりますのでご覧ください。

生成

JavaScriptで正規表現を扱うにはRegExpオブジェクトを生成します。

生成方法には『スラッシュ記法』と『RegExpクラス』の2種類あります。

スラッシュ記法

正規表現をスラッシュ(/)で括る記法です。

/正規表現/

RegExpクラス

RegExpクラスを使う方法です。

new RegExp("正規表現")
// または
new RegExp(/正規表現/)


いずれの方法でもRegExpオブジェクトが生成されます。

let regx1 = /x/;
console.log(regx1.constructor.name);

let regx2 = RegExp("x");
console.log(regx2.constructor.name);
RegExp
RegExp

constructor.nameプロパティはオブジェクトのクラス名です。

RegExp

RegExpオブジェクトは正規表現を扱うメソッドを持ちます。

test(マッチテスト)

testメソッドは正規表現にマッチする文字列が存在するかテストします。

let content = "JavaScript is a programming language.";

let regx = /a\w*?i/g;

___ih_hl_start
let result = regx.test(content);
___ih_hl_end

console.log(result);
true

exec(文字列の取得)

execメソッドは正規表現にマッチした文字列を取得します。

let content = "JavaScript is a programming language.";

let regx = /a\w*?i/g;

___ih_hl_start
let result = regx.exec(content);
___ih_hl_end

for( let str of result ) {
    console.log(str);
}
avaScri

String

Stringオブジェクトは正規表現を扱うメソッドを持ちます。

search(文字列インデックスの取得)

searchメソッドは正規表現にマッチした文字列の1文字目のインデックスを取得します。

let content = "JavaScript is a programming language.";

let regx = /a\w*?i/g;

___ih_hl_start
let result = content.search(regx);
___ih_hl_end

console.log(result);
1

match(全マッチ文字列の取得)

matchメソッドは正規表現にマッチした文字列を全て取得します。

let content = "JavaScript is a programming language.";

let regx = /a\w*?i/g;

___ih_hl_start
let result = content.match(regx);
___ih_hl_end

for( let str of result ) {
    console.log(str);
}
avaScri
ammi

split(文字列の分割)

splitメソッドは正規表現にマッチした文字列で文字列を分割します。

let content = "JavaScript is a programming language.";

let regx = /a\w*?i/g;

___ih_hl_start
let result = content.split(regx);
___ih_hl_end

for( let str of result ) {
    console.log(str);
}
J
pt is a progr
ng language.

replace(文字列の置換)

replaceメソッドは正規表現にマッチした文字列を置換します。

let content = "JavaScript is a programming language.";

let regx = /a\w*?i/g;

___ih_hl_start
let result = content.replace(regx, "---");
___ih_hl_end

console.log(result);
J---pt is a progr---ng language.