由Regex结果子字符串拆分的JavaScript字符串包括空切片

时间:2011-05-24 02:15:33

标签: javascript string-split

我有以下字符串拆分JavaScript代码:

var formula = "(field1 + field2) * (field5 % field2) / field3";
console.log(formula.split(/[+(-)% *\/]/));

结果出乎意料:

["", "field1", "", "", "field2", "", "", "", "", "field5", "", "", "field2", "", "", "", "field3"]

期望的结果是什么:

["field1", "field2", "field5", "field2", "field3"]

我正在使用谷歌Chrome 11正式版作为测试浏览器,请告知我的错误。

谢谢!

威廉

2 个答案:

答案 0 :(得分:1)

而不是在多个/[+(-)% *\/]/上分割/[+(-)% *\/]+/formula.replace(/^[+(-)% *\/]+|[+(-)% *\/]+$/g, "").split(/[+(-)% *\/]+/) 。你仍然可能在开始和结束时获得空匹配。要解决这个问题,您可以使用类似的正则表达式替换:

var formula = "(field1 + field2) * (field5 % field2) / field3";
console.log(formula.replace(/^[+(-)% *\/]+|[+(-)% *\/]+$/g, "").split(/[+(-)% *\/]+/));

所以

field1,field2,field5,field2,field3

产量

{{1}}

答案 1 :(得分:0)

你正在分裂每个角色。如果你拆分他们的组,你将得到你想要的结果。

console.log(formula.split(/[+(-)% *\/]+/));

只有一个障碍:你必须从字符串的开头和结尾手动剥离这些字符(或者在开头/结尾弹出一个空字符串) - 这不是你能够处理的东西仅split