Javascript如何跳过基于空格分隔符的拆分,以除去后跟特定序列的空格

Javascript如何跳过基于空格分隔符的拆分,以除去后跟特定序列的空格,javascript,regex,Javascript,Regex,我想解析目标字符串“汤基素食者无味精” 成为一个数组,[“汤”、“碱”、“素食”、“无味精”] 所以基本上是按空格解析的,除非空格跟在单词“no” 我在下面尝试了一下,结果并不完全正确: let test = "Soup base vegetarian no msg "; console.log(test.split(/([^no]\s)/g)); 我应该使用什么正则表达式来实现这样的目标 您可以使用此匹配而不是拆分: var str=“汤基素食者无味精”; var arr=str.matc

我想解析目标字符串
“汤基素食者无味精”
成为一个数组,
[“汤”、“碱”、“素食”、“无味精”]
所以基本上是按空格解析的,除非空格跟在单词
“no”
我在下面尝试了一下,结果并不完全正确:

let test = "Soup base vegetarian no msg ";
console.log(test.split(/([^no]\s)/g));

我应该使用什么正则表达式来实现这样的目标

您可以使用此
匹配
而不是
拆分

var str=“汤基素食者无味精”;
var arr=str.match(/(?:\bno\s+)\s+/g);
控制台日志(arr);
//=>[“汤”、“基础”、“素食”、“无味精”]
基于拆分的解决方案

代码很奇怪,因为JS

let test=“汤基素食者无味精”;
var令牌=反向(测试)
.拆分(/(?!on)/g)
.filter(x=>x)
.地图(反面);
console.log(令牌);
功能反转(s){
返回s.split(“”).reverse().join(“”);

}
您可以使用此正则表达式
((否)?\w+

解释:-

  • (否)
    将匹配
    (带空格的否或无(?)
  • \w+
    将匹配单词(匹配多个字母表(a-z或a-z))
var str=“汤基素食者无味精”;
var arr=str.match(/(否)?\w+/g);

控制台日志(arr)
即使没有单词边界模式,这个正则表达式似乎也能工作。
\b
是的,它也能在没有单词边界的情况下工作,但是它也会匹配类似于
赌场