キリスト教徒 :
私が使用していlunr.jsを。
以下、このJavaScriptコード
- 最初の検索からクエリパラメータを取得します
- スペースで結合+文字を置き換えます
- 次の検索のための検索フィールドに変更されたクエリを保存します
- そして、それは最終的に変更されたクエリを使用して検索します
var query = getUrlParameter('q');
var queryWithoutPlus = query.replace(/\+/g, " ");
searchField.value = queryWithoutPlus
index.search(queryWithoutPlus);
そのため、クエリのparam文字列は次のようになりtest+ABCD+Test++Test2+-Test+-Test+Test
、コードは、クエリパラメータに+文字を置き換えるq
素敵な方法でユーザーに結果を表示するために、スペースでは、しかし、のような検索文字列
「テスト+テスト-test」
現在、その結果
「テストテスト-test」
私は期待します
「テスト+テスト-test」
私はtempQueryなどを使用して行のクエリを変更するために何回かを試してみました
var tempQuery = query.replace(/\+\+/g, " -");
var queryWithoutPlus = tempQuery.replace(/\+\-/g, " -");
これは、残りの+文字でうまくいかないと、私はあなたの助けを必要とするので、右に感じることはありません。
それだけで(それはあるかもしれないものは何でも、アドバイス歓迎)正しい正規表現を使用するように煮詰めるまたはlunr.jsでクエリパラメータを使用するためのより良い方法でもありですしていますか?
アリエル:
あなたは必要な負の後読みのクエリを(?<!\+)
"test+ABCD+Test++Test2+-Test+-Test+Test".replace(/(?<!\+)\+/g, " ")
>> "test ABCD Test +Test2 -Test -Test Test"