正規表現による文字列の検索(match)
正規表現による文字列の検索を行うには、string.match
メソッドを使用します。
正規表現については、「JavaScriptの正規表現」ページをご覧ください。
JavaScriptの正規表現
構文
var matchesArray = string.match(regexp);
引数名 | 型 | 説明 | |
---|---|---|---|
第一引数 必須 |
regexp | string|RegExp | 検索する文字列または正規表現 |
戻り値
見つかった場合は一致したすべての文字列および括弧内の文字列を配列で、見つからなかった場合はnullを返します。
なお、引数に文字列を指定した場合は、暗黙的にnew RegExp(...)
が行われて検索を実行します。
サンプルコード
JavaScript
var str = 'foo bar baz sample',
index = str.match(/ba./g);
alert(index); // ['bar', 'baz']
String.matchメソッドで検索パターンが配列に対応させる
String.matchメソッドで検索パターンが複数に対応する方法をご紹介します。
- ※ 毎回繰り返し処理を書かずに済むよう関数にして使いまわす方法を紹介しています。
- ※ 検索パターン間は「&&」や「||」の関係などはありません。
JavaScript
/**
* 正規表現での検索(配列対応)
* @param {any[]} patterns 検索パターン
* @param {any} str 検索する文字列
* @return {any[]} 見つかった結果を配列で返す
*/
var matchMultiPatterns = function(patterns, str) {
var result = [];
var isArray = function(targetObject) {
return (Object.prototype.toString.call(targetObject) === '[object Array]') ? true : false;
};
if (isArray(patterns)) {
for (var i = 0, len = patterns.length; i < len; i++) {
result.push(str.match(patterns[i]));
}
} else {
result.push(str.match(patterns[i]));
}
return result;
};
使い方
引数名 | 型 | 説明 | |
---|---|---|---|
第一引数 必須 |
patterns | any | 検索する文字列または正規表現 |
第二引数 必須 |
str | any | 検索元となる文字列 |
戻り値
matchメソッドの戻り値を配列に格納して返します。
JavaScript
var text = 'foo bar baz sample text',
searchPatterns = [/.e/, 'sample'];
matchMultiPatterns(searchPatterns, text);