2016-07-24 5 views
0

私はJavascriptの#パラメータでセッション間で検索ステータスを共有したり続けることができるようにする基本的なアプリケーションを構築しています(これをSPAとして構築していますので、GETパラメータは必ずしも機能するとは限りません)。以下のような私はURIを持つことができます私のアプリで分割操作の捨てられた部分を返す方法はありますか?

/items#rarity=rare,common,uncommon&cost=ascending&category=primary

私は私のコンポーネントを反応させるにはコストフィルタを設定するにはどのような状態をチェックしたい場合は、私はasecndingを抽出し、その後に昇順]チェックボックスをチェックしたいと思いますページの読み込み時に状態を設定します。

私は正規表現と組み合わせるのJavascriptのsplit関数を使用している場合は、私が行うことで、コスト上のすべての情報を取り込むことができます。

var hash = window.location.hash; 
hash = hash.split(/cost.*&/); 

を今、これは明らかに二つの部分として最初のもの/items#rarity=rare,common,uncommon&category=primaryで配列を返しますsplit関数は、私の場合正規表現の文字列にマッチする条件で分割されます。

スプリット関数から抽出された文字列をキャプチャできる方法はありますか?次に、コスト文字列を解析できますか?

+1

の下に使用しない、 '任意の目的の正規表現とsplit'を使用しないでください。パラメータ構造を正しく解析するだけです。 – Bergi

+0

http://codepen.io/nagasai/pen/vKjZwNこれはあなたのために働くことを願っています –

答えて

2

いいえ方法。ああ、あります!あなたの正規表現をキャプチャグループにまとめてください。

var s = '/items#rarity=rare,common,uncommon&cost=ascending&category=primary'; 
 
r = s.split(/(cost.*&)/); 
 

 
console.log(r[0]); 
 
console.log(r[1]); //there is the "thrown" part 
 
console.log(r[2]);

+0

私は最終的なリゾートとしてこれをやったことがあります...「これは可能な質問ですか?削除された部分をつかむだけです:) – Alex

+0

@Alex編集を参照してください! – nicael

+0

うわー、それは本当にクールです!ありがとう@nicael – Alex

1

期待される結果を達成するために、

var x="/items#rarity=rare,common,uncommon&cost=ascending&category=primary"; 

console.log(x.split('cost=')[1].substring(0,x.split('cost=')[1].indexOf("&"))); 

http://codepen.io/nagasai/pen/RRyLmA

関連する問題