2017-06-12 1 views
1

URLからclickイベントを使用してパラメータを削除しようとしています。問題は、パラメータの前に&があるかどうかです。したがって、フォームはsearch=MYSEARCHTERMまたは&search=MYSEARCHTERMです。URLから任意の文字を含むパラメータを検索して削除します

私は次のものを持っていますが、どちらか一方ではうまく動作しますが、両方ではうまく動作しないようです。私はif/elseステートメントの1つにこのようなものが含まれていると思っていました。 (安っぽい正規表現すみませんが、私は前にそれを書いたことがありません)

var searchKeywordRegx = new RegExp(/(?:&)/ + 'search=' + searchKeyword);

$('.searchKeyword').click(function() { 
    $(this).remove(); 
    var searchKeywordRegx = new RegExp('search=' + searchKeyword); 
    console.log(searchKeywordRegx); 
    document.location.href = String(document.location.href).replace(searchKeywordRegx , ""); 
}); 

は、私がここに道オフベースのですか?正規表現では任意のものにする

答えて

2

使用?

var searchKeywordRegx = new RegExp('&?search=' + searchKeyword); 
+0

Ah!とても簡単。ありがとう – LMG

1

はあなたが正規表現せずにこれを行うことができますようです。ドキュメントの場所の「検索」の部分を単に削除すると:

document.location.search = document.location.search 
    .replace('search=' + encodeURI(searchKeyword), ''); 
+0

私はencodeurIについて聞いたことがあるが、私はそれに精通していない。私はそれをチェックする必要があります。ありがとう。 – LMG

+0

@LMG、私は 'encodeURI'を使用しています。なぜなら、値に適切なエンコードされた文字列があることを保証するからです。たとえば、文字列が 'search = testing this'(スペースを含む)だった場合、URLには' search = testing%20this'があります。したがって、 'encodeURI'は、あなたが渡す値がURLでどのように見えるかと一致することを保証します。 – KevBot

+0

説明をありがとう。 – LMG

関連する問題