Javascript 如何编写一个正则表达式命令来匹配多个除法器,包括任意数量的空格,但不匹配等号之间的空格?

Javascript 如何编写一个正则表达式命令来匹配多个除法器,包括任意数量的空格,但不匹配等号之间的空格?,javascript,regex,Javascript,Regex,我读了很多帖子,发现JS regex似乎不支持look behind。有没有办法我仍然可以做的部分,以排除匹配,是任何平等的符号与任何数量的空间在前面或后面 到目前为止,我得到的是\s+,| \(| \)|(?!\s*?=) 这个正则表达式将匹配所有的除法器,比如任意数量的空格“,”,“(”,或“)”,但对于我想要排除=符号之前或之后的任何空格的最后一部分,它不能正常工作 所以我做(?!\s*?=)的那一刻就是地狱爆发的那一刻。但是,我可以看到,如果我只是对管道使用\s*?=,它实际上会将任何相

我读了很多帖子,发现JS regex似乎不支持
look behind
。有没有办法我仍然可以做的部分,以排除匹配,是任何平等的符号与任何数量的空间在前面或后面

到目前为止,我得到的是
\s+,| \(| \)|(?!\s*?=)
这个正则表达式将匹配所有的除法器,比如任意数量的空格“,”,“(”,或“)”,但对于我想要排除
=
符号之前或之后的任何空格的最后一部分,它不能正常工作

所以我做
(?!\s*?=)
的那一刻就是地狱爆发的那一刻。但是,我可以看到,如果我只是对管道使用
\s*?=
,它实际上会将
任何相等的符号与它前面或后面的任何数量的空格进行匹配

沙箱:

有没有办法我仍然可以用javascript来做这件事

示例(通过使用带有
STRING.split(regexrulehere)
的正则表达式)

输入字符串:
我的应用程序命令,arg1 arg2 arg3=val1,arg4=val2)

预期输出:

[
'my-app',
'command',
'arg1',
'arg2',
'arg3=val1', // or `arg3   =val1` is fine as well
'arg4=val2', // or `arg4 = val2` is fine as well
]

在输入字符串中,
=
周围有空格,并且在一次
拆分后,不能期望得到
arg4=val2
(没有空格)

分两个“regex”步骤进行:

\s*=\s*
匹配任何0+空格、
=
和0+空格,此
替换
将删除
=
周围的所有空格
.match(/[^\s,()]+/g)
将提取除空格、
)以外的所有1+字符块。
字符作为
[^…]
是一个字符串

JS演示:

var s=“我的应用程序命令,arg1 arg2 arg3=val1,arg4=val2”;

log(s.replace(/\s*=\s*/g,'=')。match(/[^\s,()]+/g))当您声明包含空格字符也可以时,另一个选项可能是不匹配括号、逗号、等号或使用否定字符类的空格字符

然后在匹配之后添加一个可选部分
(?:..)
,该部分匹配由空格字符包围的等号,并再次使用求反字符类:

[^\s(),=]+(?:\s*=\s*[^\s(),=]+)?

在输入字符串中,
=
周围有空格,并且在一次
拆分之后,不能期望得到
arg4=val2
(没有空格)。分两个“正则表达式”步骤执行:
s.replace(/\s*=\s*/g,'=')。split(/[\s,()]+/)。filter(Boolean)
,或
s.replace(/\s*=\s*/g,'=')。match(/[^\s,()]+/g)
[^\s(),=]+(?:\s*=\s*[^\s(),=]+)?