Javascript 正则表达式是否替换查询参数(+;+;,+;-和+;)中的前导加号?

Javascript 正则表达式是否替换查询参数(+;+;,+;-和+;)中的前导加号?,javascript,regex,query-parameters,lunrjs,Javascript,Regex,Query Parameters,Lunrjs,我正在使用 下面是Javascript代码 从第一次搜索中获取查询参数 将绑定+字符替换为空格 将修改后的查询存储在搜索字段中,以便下次搜索 然后,它最终使用修改后的查询进行搜索 因此,查询参数字符串可能看起来像test+ABCD+test++Test2+-test+-test+-test+test,代码用空格替换查询参数q中的+字符,以便以良好的方式向用户显示结果,但搜索字符串像 “测试+测试-测试” 目前导致 “测试-测试” 我希望 “测试+测试-测试” 我尝试在一行中多次使用tempQ

我正在使用

下面是Javascript代码

  • 从第一次搜索中获取查询参数
  • 将绑定+字符替换为空格
  • 将修改后的查询存储在搜索字段中,以便下次搜索
  • 然后,它最终使用修改后的查询进行搜索
因此,查询参数字符串可能看起来像
test+ABCD+test++Test2+-test+-test+-test+test
,代码用空格替换查询参数
q
中的+字符,以便以良好的方式向用户显示结果,但搜索字符串像

“测试+测试-测试”

目前导致

“测试-测试”

我希望

“测试+测试-测试”

我尝试在一行中多次使用tempQuery修改查询,如

var tempQuery = query.replace(/\+\+/g, " -");
var queryWithoutPlus = tempQuery.replace(/\+\-/g, " -");
但这对剩下的+字符不起作用,感觉不对劲,所以我需要你的帮助

是使用正确的正则表达式(不管它是什么,欢迎建议)还是有更好的方法在lunr.js中使用查询参数?

您需要一个查询


哇!使用regex对我来说太难了,显然不是每个人都能用。非常感谢你的帮助。听说lookaheads,使用lookbehinds我今天学到了一些新东西。仅供参考,我测试了这个regex,它在Internet Explorer中不起作用,只是在Chrome中,可能与ECMA2018支持有关,请参阅或斜杠语法。
var tempQuery = query.replace(/\+\+/g, " -");
var queryWithoutPlus = tempQuery.replace(/\+\-/g, " -");
"test+ABCD+Test++Test2+-Test+-Test+Test".replace(/(?<!\+)\+/g, " ")
>> "test ABCD Test +Test2 -Test -Test Test"
"test+ABCD+Test++Test2+-Test+-Test+Test".replace(/\+\+/g, "#spaceplus#")
  .replace(/\+/g, " ").replace(/#spaceplus#/g, " +")
>> "test ABCD Test +Test2 -Test -Test Test"