javascript用正则表达式拆分字符串

时间:2015-02-05 17:05:32

标签: javascript regex

我有以下2个字符串,我应根据分隔符拆分:'/'或“/ *”

我的代码:

var move = "1/2/13/14";
var results = move.split(new RegExp("[/\*?]"));

结果很好:

["1","2","13","14"]

但是,对于下一个例子:

var move = "1/*2/13/*14";
var results = move.split(new RegExp("[/\*?]"));

我得到了不好的结果:

["1","","2","13","","14"]

为什么?如何修改它才能正常工作?

谢谢!

4 个答案:

答案 0 :(得分:3)

您可以在*之后选择/

"1/*2/13/*14".split( /\/\*?/ );
["1", "2", "13", "14"]

"1/2/13/14".split( /\/\*?/ );
["1", "2", "13", "14"]

答案 1 :(得分:2)

通过使用[],您将创建一个字符类,这意味着"这些符号中的任何一个"。这意味着您的正则表达式正在查找文字字符/*(在char类中不必要地转义), ?以进行拆分。 *?不会在字符类中使用其元功能。

您想要的正则表达式是/\/\*?/(作为正则表达式文字),或者使用构造函数new RegExp("/\\*?")。你不需要角色类。

答案 2 :(得分:1)

您遇到问题,因为您使用括号对字符进行分组。[])。在正则表达式中,这些字符将允许组中的任何字符匹配。

如果你删除它们:var results = move.split(new RegExp("/\\*?"));,你应该得到你想要的结果。

答案 3 :(得分:0)

这个有助于:

move.split(new RegExp("[/][*]?"));