Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/454.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Regexp被多个字符分割并保留分隔符_Javascript_Regex - Fatal编程技术网

Javascript Regexp被多个字符分割并保留分隔符

Javascript Regexp被多个字符分割并保留分隔符,javascript,regex,Javascript,Regex,我正在尝试将以下内容拆分为多个字符,并将它们保留在数组中 拆分人:&&,| |,(,) 我的回报应该是这样的: ["arg","&&","(","arg","||","(","!arg","&&","arg",")",")"] 捕获组保存在结果数组中 |应该转义,因为它在正则表达式中有特殊含义(和)也有特殊含义,但在[]内部,它们字面上是匹配的 > "arg&&(arg||(!arg&&arg))".split(/([()]

我正在尝试将以下内容拆分为多个字符,并将它们保留在数组中

拆分人:&&,| |,(,)

我的回报应该是这样的:

["arg","&&","(","arg","||","(","!arg","&&","arg",")",")"]

捕获组保存在结果数组中

|
应该转义,因为它在正则表达式中有特殊含义<代码>(和
也有特殊含义,但在
[]
内部,它们字面上是匹配的

> "arg&&(arg||(!arg&&arg))".split(/([()]|&&|\|\|)/)
["arg", "&&", "", "(", "arg", "||", "", "(", "!arg", "&&", "arg", ")", "", ")", ""]
要删除空字符串,请使用:

> "arg&&(arg||(!arg&&arg))".split(/([()]|&&|\|\|)/)
["arg", "&&", "", "(", "arg", "||", "", "(", "!arg", "&&", "arg", ")", "", ")", ""]
> "arg&&(arg||(!arg&&arg))".split(/([()]|&&|\|\|)/).filter(function(x) { return x; })
["arg", "&&", "(", "arg", "||", "(", "!arg", "&&", "arg", ")", ")"]