javascript - 正则表达式匹配所有空格,除了两侧都有单词的单个空格

标签 javascript regex

我已经走了这么远:

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) 

匹配 &nbsp;字符,您可以使用 (\u00A0)而不是( )

希望这有帮助。

最佳答案

您可以使用负前瞻:

(?!\b \b)( )

关于javascript - 正则表达式匹配所有空格,除了两侧都有单词的单个空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47444278/

相关文章:

javascript - 替换/添加多个 DOM 元素 : Efficient and robust Method?

javascript - 输入字段中的按钮

Javascript/jQuery 正则表达式代码问题

java - 使用正则表达式验证数字和货币

regex - Golang 正则表达式在括号内获取值

javascript - 在 ID jquery 中选择一个类(多个)

javascript - 单击按钮后动态生成 html 页面的内容

javascript - 是否可以使用 google 闭包编译器更改 javascript?

c# - 正则表达式使用 C# 限制只出现一次左括号和右括号

javascript正则表达式替换水平椭圆