javascriptで指定したcookieの値を取り出す場合の参考で正規表現による取り出し方法がありましたが、なぜうまく値がとれているのかがあまり理解できません…

Document.cookie
https://developer.mozilla.org/ja/docs/Web/API/Document/cookie

document.cookie = "test1=Hello";
document.cookie = "test2=World";

var cookieValue = document.cookie.replace(/(?:(?:^|.*;\s*)test2\s*\=\s*([^;]*).*$)|^.*$/, "$1");

function alertCookieValue() {
  alert(cookieValue);
}
(?:(?:^|.*;\s*)test2\s*\=\s*([^;]*).*$)

↑ test2=以降の「;」を除いた文字列

|^.*$

↑ またはすべての文字列

になると考えていたので、例えば「test2=World;test1=Hello;」だった場合は「Worldtest1=Hello」を返すのかと思っていたのですが、実行すると「World」が返ってきます。

正規表現を調べたのですが、なぜ「World」だけが返ってくるのかが理解できませんでした。

詳しい方がいらっしゃいましたら、なぜ「World」だけが返ってくるのかを詳しく教えていただきたいです。

宜しくお願い致します。