避免使用正则表达式引用文本

Avoid quoted text with regex expression

使用这个正则表达式: /^\s+|\s+$|\s+(?=\s) 我可以检测并删除超过 1 的 spaces。 现在,我想修改它,使其不检测引号之间的 spaces,但仍检测所有其他超过 1 的 spaces。 您不应修改的 space 示例:

" don't modify the space between quotes like this "

我应该如何修改正则表达式?

这是您要查找的正则表达式。它匹配所有不在引号中且超过 1 的空格。

^\s+|\s+$|\s+(?=\s)(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)

我在最后添加的部分的解释

  • (?= 前瞻断言 - 断言以下正则表达式匹配
    • (?:Non-capturing组
      • [^\"]*\"[^\"]*\" 不应捕获的正则表达式 - 在我们的例子中,引号之间的文本
    • )关闭non-capturing群
    • *前一组可匹配0+次
    • [^\"]* 除了引用之外的任何内容。
    • $ 断言之前的整个条件应该一直有效到字符串结束
  • ) 关闭前瞻

另外,请参阅 demo