0

ブラウザで使用する場合、このjavascript:

var url = window.location.toString();
window.location = url.replace(/.com/, '.com.nyud.net').replace(/.net/, '.net.nyud.net');

これは、.com(および含まれている場合は他のTLD)で終わるWebサイトで発生します。

から

website.com/123

website.com.nyud.net.nyud.net/123

.netで終わるWebサイトでは正しく機能します。

から

website.net/abc

website.net.nyud.net/abc

正しく機能するように調整するにはどうすればよいですか?

4

3 に答える 3

4

これは、.netin.com.nyud.netが に置き換えられているために発生してい.com.nyud.netます。

これを修正するには、1 つの正規表現を使用してすべての TLD を置き換えます。

window.location = url.replace(/\.(com|net|org)(?=$|\/|\?)/, '.$1.nyud.net');

正規表現を少し変更して、後方参照を使用して TLD を置換文字列に追加するようにしました。また.com、 の後に文字列の末尾または が続くことを確認するため、 の/ようなものとは一致しませんwww.company.net

UPDATE : URL をwebsite.com/123正しく置き換えるように修正しました。

于 2013-02-05T21:45:47.937 に答える
1

最初の置換は で置換.com.com.nyud.netます。.net2 回目の置換では、新しいものをに置き換えました.net.nyud.net。だからあなたはで終わるwebsite.com.nyud.net.nyud.net

ロジックを反転して、が の.net前に置き換わるようにし.comます。

url.replace(/.net/, '.net.nyud.net').replace(/.com/, '.com.nyud.net'); 代わりに使用 してください。

更新:.特別なので 逃げてください。url.replace(/\.net/, '.net.nyud.net').replace(/\.com/, '.com.nyud.net');

更新: おそらく urls: の最後でのみ置き換えたいと思うでしょう url.replace(/\.net$/, '.net.nyud.net').replace(/\.com$/, '.com.nyud.net'); が、それはパスを想定していません。

于 2013-02-05T21:43:42.823 に答える
0

文字列の一部ではなく、文字列の末尾を$置き換えることを定義するには、おそらく正規表現で を使用する必要があります。

次に、完全な URL の代わりにホストをフォーマットし、その後に何かを追加し/ます。

このようなもの:

var host = window.location.host; // website.com
var restOfUrl = window.location.pathname;

var newHost = host.replace(/\.com$/, '.com.nyud.net').replace(/\.net$/, '.net.nyud.net');
var url = newHost + restOfUrl;
于 2013-02-05T21:46:20.853 に答える