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