【问题标题】:Javascript/regex: Remove comma only if it is not in bracketsJavascript/正则表达式:仅当逗号不在括号中时才删除它
【发布时间】:2017-06-22 16:43:49
【问题描述】:

如果逗号不在括号中,是否可以替换它。

例如 filters=fuelType=D,make=[BMW,CITROEN,DACIA],price=(0,100) 对此: filters=fuelType=D&make=[BMW,CITROEN,DACIA]&price=(0,100)

【问题讨论】:

  • 看来你要用& 替换它们,你需要重新格式化你的问题并添加你得到的东西。这不是一个帮助/我的地方。
  • 关于在括号内找东西或不找东西的问题有几十个。请搜索它们。基本概念是搜索要么括号表达式要替换的内容,然后仅替换后者。
  • 您能否就您在这里尝试解决的实际问题提供一些更广泛的背景信息?您是如何以逗号分隔的字符串开头的?可能有一种更简单的方法来(可能)构造 URL 参数,而不是对那个字符串应用一个令人困惑的正则表达式。

标签: javascript regex negative-lookahead negative-lookbehind


【解决方案1】:

这是您想要的正则表达式:/,\s*(?=[^)^\]]*(?:\(|\[|$))/g

这是 js fiddle 使用 String.prototype.replace() 替换 []() 之外的字符串逗号为 &

var string = 'filters=fuelType=D,make=[BMW,CITROEN,DACIA],price=(0,100)';
var result = string.replace(/,\s*(?=[^)^\]]*(?:\(|\[|$))/g, '&');
alert(result); // -> `filters=fuelType=D&make=[BMW,CITROEN,DACIA]&price=(0,100)`

https://jsfiddle.net/tmms2mck/

这里是这个正则表达式的 regex101 解释:https://regex101.com/r/hAuEQm/1

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-07-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-10
    • 2020-02-14
    • 2017-04-07
    • 2019-11-08
    • 2018-08-25
    相关资源
    最近更新 更多