我有以下字符串拆分JavaScript代码:
var formula = "(field1 + field2) * (field5 % field2) / field3";
console.log(formula.split(/[+(-)% *\/]/));
结果出乎意料:
["", "field1", "", "", "field2", "", "", "", "", "field5", "", "", "field2", "", "", "", "field3"]
期望的结果是什么:
["field1", "field2", "field5", "field2", "field3"]
我正在使用谷歌Chrome 11正式版作为测试浏览器,请告知我的错误。
谢谢!
威廉
答案 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
。