我有以下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"]
为什么?如何修改它才能正常工作?
谢谢!
答案 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("[/][*]?"));