带正则表达式的javascript拆分字符串
我有以下2个字符串,我应该根据分隔符拆分它们:“/”或“/” 我的代码:带正则表达式的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
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类中的转义是多余的。