正则表达式匹配 space 而不是 starting/ending 与 char

RegEx matching space not starting/ending with char

我需要将文本拆分为单词,但我还需要忽略 & 字符。这意味着例如单词 "h & m" 一直在一起。正则表达式也必须在 JavaScript 和 node.js.

中工作

我用了/(?!&)\s(?!&)/g。但是忽略 space 仅在末尾带有 & 字符。

您可以使用向前看和向后看...(只需将 < 添加到您当前的正则表达式)

/(?<!&)\s(?!&)/g
   ^

DEMO

解释:

  • 前一个字符不是 &.. (?<!&) 且下一个字符也不是 &.. (?!&)
  • 的所有空格

如果不能拆分(JS没有look-behind所以不能拆分),需要匹配:

\S+(?:\s&\s\S+)*

demo

代码:

var re = /(\S+(?:\s&\s\S+)*)/g; 
var str = 'H & M shopping mall';
var m = str.match(re);
document.getElementById("res").innerHTML = m;
<div id="res"/>