我试图使用正则表达式删除右括号前后的空格,问题是Safari不支持我的解决方案,有没有其他方法可以使用“lookbehind”功能? 我的字串为例:check IN [ "[hello world]*" ] OR host IN ( abc,123) 我期待得到:check IN ["[hello world]*"] OR host IN (abc,123) 我目前的解决方案:(?<=[([])\s+|\s+(?=[)\]])
const result = str.replace(/([\[(])\s+|\s+([\])])/g, "$1$2");
// ^^^^^^^^^^ ^^^^^^^^^^
// after opening ( or [ −−−−−−−−/ |
// before closing ) or ] −−−−−−−−−−−−−−−−−−/
1条答案
按热度按时间5lwkijsr1#
假设 :
1.您 * * 总是 * * 希望 删除
(
或[
后面 的 所有 空格 以及)
或]
前面 的 所有 空格 , 并且1.在 文本 常量 中 , 您 不 希望 有
(
、)
、[
或]
保持 不变 * ( 这 实际 上 只是 #1 的 一 个 子集 , 但 我 认为 值得 特别 指出 , 因为 这 是 一 个 很 大 的 假设 ) *... 那么 我 认为 嵌套 不是 问题 , 我们 可以 使用 正则 表达式 来 实现 。 而且 我 认为 您 根本 不 需要 查看 :
中 的 每 一 个
这里 的 技巧 是 我们 使用 两 个 捕获 , 然后 在 替换 中 使用 两 个 ;它们 中 的 一 个 将 总是
""
, 而 另 一 个 将 是"("
、"["
、")"
或"]"
。示例 :
第 一 次