1

ハッシュに遭遇したときに一致を停止する必要がある次の正規表現があります。

正規表現:

/[?&]+([^=&]+)=([^&]*)/gi

URLサンプル:

http://website.com/1068?page=4&taco=cat#tasty

上記の正規表現は、最後のキャプチャグループcat#tastyだけでなく、キャプチャします。catハッシュが存在する場合にのみ機能する次のことを試みました。

正規表現テスト:

/[?&]+([^=&]+)=([^&]*)#/gi

URLにハッシュがない場合、一致しません。ハッシュをオプションにする— —最後のキャプチャグループ#?の貪欲さがまだ取得しているため、どちらも機能しません。*cat#tasty

4

2 に答える 2

2

JavaScript で URL を解析するあまり知られていない方法は、単純に a 要素を作成し、その URL を href 属性として指定することです!

var link=document.createElement('a')
link.href="http://website.com/1068?page=4&taco=cat#tasty"
alert(link.search) //?page=4&taco=cat
alert(link.hash) //#tasty

これを放り投げるだけです。link.search (またはおそらく link.search.substr(1)) だけで正規表現を実行する場合、パラメーター以外の一致について心配する必要はありません。

于 2012-06-28T00:38:01.743 に答える
1
/[?&]+([^=&]+)=([^&#]*)/gi

Ray が指摘したように、多くの URL パーサーが利用可能です。

于 2012-06-28T00:26:18.503 に答える