带正则表达式的javascript拆分字符串

带正则表达式的javascript拆分字符串,javascript,regex,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

我有以下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"]
为什么??如何修改它以使其正常工作


谢谢大家!

您可以在
/
之后将
*
设置为可选:

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

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

您可以在
/
之后将
*
设置为可选:

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

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

通过使用
[]
,您正在创建一个字符类,意思是“这些符号中的任何一个”。这意味着您的正则表达式正在寻找用于拆分的文本字符
/
*
(在char类中不必要地转义)或
*
在字符类中不具有元功能


您需要的正则表达式是
/\/\*?/
(作为正则表达式文本),或者使用构造函数
newregexp(“/\*?”)
)。您不需要字符类。

通过使用
[]
,您正在创建一个字符类,意思是“这些符号中的任何一个”。这意味着您的正则表达式正在寻找用于拆分的文本字符
/
*
(在char类中不必要地转义)或
*
在字符类中不具有元功能


您需要的正则表达式是
/\/\*?/
(作为正则表达式文本),或者使用构造函数
newregexp(“/\*?”)
)。您不需要字符类。

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


如果像这样删除它们:
var results=move.split(new RegExp(“/\\*?”)
,您应该会得到想要的结果。

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

如果像这样删除它们:
var results=move.split(new RegExp(“/\\*?”),您应该会得到您想要的结果。

此选项有助于:

move.split(new RegExp("[/][*]?"));
这个有助于:

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

你期望结果是什么?就像第一个?你期望结果是什么?就像第一个?@eldarerat这只是为了记录,字符类中带有
*
的单个
\
不会有任何影响,因为它被解释为转义符号。它需要一个双反斜杠来引起麻烦(
move.split(/[/][\\*]?/)
;注意:
RegExp
构造函数将字符串作为其参数,因此将应用双转义,因此需要
new RegExp([/][\\\*]?”
失败)。无论如何,您完全正确,character类中的转义是多余的。@Eldarerat这只是为了记录,character类中带有
*
的单个
\
不会有影响,因为它被解释为转义符号。它需要一个双反斜杠来引起麻烦(
move.split(/[/][\\*]?/)
;注意:
RegExp
构造函数将字符串作为其参数,因此将应用双转义,因此需要
new RegExp([/][\\\*]?”
失败)。无论如何,您完全正确,character类中的转义是多余的。