避免使用正则表达式引用文本
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
使用这个正则表达式:
/^\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