【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.