matchの返り値

matchは条件に合致した最初の文字列を配列として返す。
文字列「xss123a12345c789xlxl」に対して「/a(.{5})c/」という条件に最初にマッチするのは「a12345c」であり、
グループ化した部分「(.5)」にマッチするのは「12345」である。
返り値["a12345c", "12345", index: 6, input: "xss123a12345c789xlxl"]
返り値は配列である(マッチするものがない場合はnull)。

インデックス[0] は マッチした最初の文字列全体
インデックス[1] は グループ化した条件「( )」に合致した最初の文字列。( )がなければ格納されない。即ち、条件が「/a.{5}c/」だったら判定されない。
インデックス[最後 -1] はマッチした場所(0から数えて何番目の文字からマッチしているか)
インデックス[最後]は 検索される側の文字列全部

[実行結果]

[ソースコード]

<script type="text/JavaScript">
var str = "xss123a12345c789xlxl";
var m = str.match(/a(.{5})c/); // aに続き、任意の5文字、c

var result = document.getElementById('kekka');
result.firstChild.nodeValue = m[1]; // 配列のインデックス番号1

var str2 = "year2015year2016year20172018"; // 検索する文字列
var m2 = str2.match(/\d{4}/); // 4桁の数字のうち最初のもの
var m3 = str2.match(/(\d{4})/); // 4桁の数字のうち最初のものと(インデックス1)、グループ化されたもののうち最初のもの(インデックス2)
var m4 = str2.match(/(\d{4})/g); // 4桁の数字があればいくつでも

console.log(m2); // ["2015", index: 4, input: "year2015year2016year20172018"]
console.log(m3); // ["2015", "2015", index: 4, input: "year2015year2016year20172018"]
console.log(m3[1]); // 2015
console.log(m4); // ["2015", "2016", "2017", "2018"]
</script>


["a12345c", "12345", index: 6, input: "xss123a12345c789xlxl"]

インデックスにもどる