用正则表达式分割的JavaScript字符串结果子字符串包括空片

问题描述

|| 我有以下字符串拆分JavaScript代码:
var formula = \"(field1 + field2) * (field5 % field2) / field3\";
console.log(formula.split(/[+(-)% *\\/]/));
结果超出预期:
[\"\",\"field1\",\"\",\"field2\",\"field5\",\"field3\"]
期望的结果将是:
[\"field1\",\"field3\"]
我使用的是Google Chrome 11正式版作为测试浏览器,请告知我做错了什么。 谢谢! 威廉     

解决方法

而不是在
/[+(-)% *\\/]/
上拆分,在一个以上的地方拆分:
/[+(-)% *\\/]+/
。您仍然可能在开始和结束时得到空的匹配。要解决该问题,您可以将类似的正则表达式与replace一起使用:
formula.replace(/^[+(-)% *\\/]+|[+(-)% *\\/]+$/g,\"\").split(/[+(-)% *\\/]+/)
所以
var formula = \"(field1 + field2) * (field5 % field2) / field3\";
console.log(formula.replace(/^[+(-)% *\\/]+|[+(-)% *\\/]+$/g,\"\").split(/[+(-)% *\\/]+/));
产量
field1,field2,field5,field3
    ,您正在拆分每个字符。如果按组分组,您将获得所需的结果。
console.log(formula.split(/[+(-)% *\\/]+/));
只有一个障碍:您将不得不从字符串的开头和结尾手动剥离那些字符(或者在开头/结尾弹出一个空字符串)-这不是您想要的只能由
split
处理。     

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...