Javascript正则表达式由多个字符分割并保持分隔符

时间:2013-09-30 12:06:38

标签: javascript regex

我正在尝试通过以下多个字符进行拆分并将它们保存在数组中。

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

"arg&&(arg||(!arg&&arg))".split(/([)||&&(])/);

我的回报应该是这样的:

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

1 个答案:

答案 0 :(得分:1)

捕获组保留在结果数组中。

|应该被转义,因为它在正则表达式中具有特殊含义。 ()也有特殊含义,但在[]内,它们字面匹配。

> "arg&&(arg||(!arg&&arg))".split(/([()]|&&|\|\|)/)
["arg", "&&", "", "(", "arg", "||", "", "(", "!arg", "&&", "arg", ")", "", ")", ""]

要删除空字符串,请使用Array filter method

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