jsコードは……
var queryString = 'Dolphin Travels (Sagar Travels)';
var results = jsonPath(jsonvar, "$.availableTrips[?("+queryString+")]");
エラー :
SyntaxError: jsonPath: unterminated string literal: _v.travels == 'Dolphin Travels (Sagar Travels)

jsコードは……
var queryString = 'Dolphin Travels (Sagar Travels)';
var results = jsonPath(jsonvar, "$.availableTrips[?("+queryString+")]");
エラー :
SyntaxError: jsonPath: unterminated string literal: _v.travels == 'Dolphin Travels (Sagar Travels)

まず、いくつかの前提条件を把握しましょう。
「Dolphin Travels (Sagar Travels)」を検索していますが、テスト データ (少なくとも表示したもの) にはこれが表示されないため、オブジェクト/配列のどの部分にあるかはわかりません。 (それが値かキーか)。
私が扱っているサンプルデータは次のとおりです。
var t = {
'availableTrips': [
{
'busType': 'Volvo A/C-Multi Axle Semi sleeper (2+2)',
'busTypeId': '101',
'fares': 250,
'travels': 'SVR Tours and Travel [Citizen]'
},
{
'busType': 'Lorem Ipsum',
'busTypeId': '102',
'fares': 300,
'travels': 'SVR Tours and Travel [Citizen]'
}
]
}
jsonPath の簡単な使用法 (指定しなかったため、この jsonPath ライブラリを意味していると想定しています):
jsonPath(t,'$.availableTrips[?(/SVR/.test(@.travels))]');
availableTrips文字列 SVR (正規表現として) が両方にあるため、配列内のオブジェクトの配列を生成します。
jsonPath(t,'$.availableTrips[?(/Volvo/.test(@.busType))]');
availableTripsと同等の、配列内の最初の項目のみを生成しt.availableTrips[0]ます。
さて、あなたの質問に答えるために:
エスケープするときは、バックスラッシュを使用できます\が、解釈される文字列にいるため、2 回エスケープする必要があります\\。のパラメータとして送信される文字列に対して 1 回、jsonParse内で解釈される式の一部として 2 回jsonParse。そのようです:
jsonPath(t,'$.availableTrips[?(/\\(2\\+2\\)/.test(@.busType))]');
+また、量指定子(と)グループ メタ文字もエスケープする必要があることに注意してください。
ユーザー入力のサニタイズに関しては、たとえばvar queryString = 'Dolphin Travels (Sagar Travels)';、次のことを実行できます (正規表現でエスケープする必要がある特殊文字は?を参照してください)。
var sanitizedQueryString = queryString.replace(/([\.\^\$\*\+\?\(\)\[\{\\\|])/g,'\\$1');