最近話題の正規表現の一部
について質問です

var m = uri.match(/https?:\/\/[^\/]*amazon\.co\.jp\/.*ASIN\/(\w{10})([\/&].*|)$/);

上記はjavascriptのソースの一部なんですが、
正規表現部分の最後の
([\/&].*|)$
が意味わかりません
| は何のためにあるんでしょうか?

| って選択演算子だったと思うのですが

| の右側に何もないので選択できないと思うのですが、

これは[\/&.*]があればそれを、なければ何も選択しないという意味でしょうか?

あと[\/&]についてなんですが
これは
\か/か&のうちどれかという意味であっていますか?
それとも\はエスケープシーケンスで
/か&のどちらかという意味でしょうか?