我已经走了这么远:
1) 运行正则表达式 / /g
匹配所有空格。
2) 对正则表达式 /\b( )\b/g
运行新的调用以匹配需要排除的空格。
现在我需要将它们都融合在一个声明中。除了第二个返回的空格之外的所有空格。有什么帮助吗?
用于测试的实时正则表达式:https://regex101.com/r/26w2WR/1
编辑:虽然已经有了很好的答案,但我发现尝试将“单词”与 \b
匹配或\B
并不总是一个好主意,因为许多可打印字符(例如点和引号)不会被 RegEx 视为单词。另一个问题是当你循环 DOM 节点时,有时你会遇到内联样式标签,如 <strong>
它也应该只算作单词的开头/结尾,但 #text 节点只是在标签之前结束。因此,您可能也想在正则表达式中包含字符串的开头和结尾。对于也希望解决这些问题的人,我最终得到了这个正则表达式:
/(\S|^)( )(?=\S|$)/g
这使用\S
(不是空格),包括字符串的开头/结尾并应用组以实现替换能力。替换 JS 如下所示:
yourTextNode.replace(/(\S|^)( )(?=\S|$)/g, '$1'+ yourreplacement)
匹配
字符,您可以使用 (\u00A0)
而不是( )
希望这有帮助。
最佳答案
您可以使用负前瞻:
关于javascript - 正则表达式匹配所有空格,除了两侧都有单词的单个空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47444278/