我到目前为止:
1)运行正则表达式/ /g
以匹配所有空格。
2)对正则表达式/\b( )\b/g
运行新调用以匹配需要排除的空格。
现在我需要将它们融合在一起。所有空格除了第二个返回的空格。有什么帮助吗?
用于测试的实时正则表达式:https://regex101.com/r/26w2WR/1
编辑:虽然已有好的答案,但我发现尝试匹配"字"使用\b
或\B
并不总是一个好主意,因为许多可打印字符(如点和引号)不会被RegEx视为单词。另一个问题是,当您循环遍历DOM节点时,有时会遇到内联样式标记,如<strong>
,它们也应该只计为单词的开头/结尾,而只是 #text 节点在标签之前结束。所以你可能想要包括start&amp; RegEx中字符串的结尾也是如此。对于任何希望解决这些问题的人,我最终得到了这个RegEx:
/(\S|^)( )(?=\S|$)/g
这使用\S
(不是空格),包括字符串的开头/结尾,并应用组替换能力。替换JS看起来像这样:
yourTextNode.replace(/(\S|^)( )(?=\S|$)/g, '$1'+ yourreplacement)
要匹配
个字符,您可以使用(\u00A0)
代替( )
希望这有帮助。
答案 0 :(得分:2)
您可以使用否定预测:
答案 1 :(得分:1)