var m, rx = /\[([^[]*)\]/g,
変数が宣言され、正規表現が定義され、2番目の変数として格納されます。
match = /^([^[]+?)(\[.*\])?$/.exec(path),
まだ変数宣言ブロック内で、この正規表現は関数の引数で実行されます。
/^
正規表現区切り文字、文字列の先頭
([^[]+?)
少なくとも1つの文字に一致し、可能な限り少なく、開き角かっこには一致しません。キャプチャされました。
(\[.*\])?
開き角かっこ、何でも一致し、次に閉じ角かっこに一致します。ブラケットと一緒にキャプチャされます。
$/
文字列の終わり、正規表現の区切り文字。
この正規表現はpath
、2つの引数を分離します。最初の角括弧の前のすべて、および角括弧の内側のすべて(必須)。
base = match[1], tokens = [];
これにより、正規表現が一致したと想定して最初の一致が「ベース」と呼ばれ、「トークン」という名前の空の配列が作成されます。
while (m = rx.exec(match[2]))
tokens.push(m[1]);
これは、角括弧上で最初に定義された正規表現と繰り返し一致し、キャプチャされた値から配列を構築します。正規表現の一致:
\[
開き角かっこ、
([^[]*)
開き角かっこ(キャプチャされた)を含まないその他のもの、
\]
閉じ角かっこ
この時点で、path
引数が整形式であると仮定するとbase
、は、の角括弧の前の部分を保持し、角括弧の内容を保持しますpath
。tokens
return [base, tokens];
上記の2つの変数を2要素配列として返します(ここではコーディングスタイルを判断しません。オブジェクトが望ましいとだけ言っておきましょう)。