0

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

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

结果出乎意料:

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

期望的结果是什么:

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

我正在使用 Google Chrome 11 官方版本作为测试浏览器,请告知我做错了什么。

谢谢!

威廉

4

2 回答 2

1

/[+(-)% *\/]/而不是在不止一个上拆分: /[+(-)% *\/]+/. 您仍然可能在开始和结束时得到空匹配。要解决该问题,您可以使用类似的正则表达式替换:

formula.replace(/^[+(-)% *\/]+|[+(-)% *\/]+$/g, "").split(/[+(-)% *\/]+/)

所以

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

产量

field1,field2,field5,field2,field3
于 2011-05-24T02:20:17.590 回答
0

你正在分裂每个角色。如果你分成几组,你会得到你想要的结果。

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

只有一个障碍:您必须从字符串的开头和结尾手动删除这些字符(或在开头/结尾弹出一个空字符串) - 这不是您一个人能够处理的split事情。

于 2011-05-24T02:20:23.113 回答