如何在javascript中分割两个分隔符之间的字符串?
我知道如何使用多个分隔符进行拆分,但我不知道如何将字符串拆分为两个字符之间的数组。因此:如何在javascript中分割两个分隔符之间的字符串?,javascript,html,arrays,regex,string,Javascript,Html,Arrays,Regex,String,我知道如何使用多个分隔符进行拆分,但我不知道如何将字符串拆分为两个字符之间的数组。因此: var myArray = "(text1)(text2)(text3)".split(???) //=> myArray[0] = "text1", myArray[1] = "text2", myArray[2] = "text3" 我应该在“?”中输入什么?或者我应该使用不同的方法 生成“)(“分隔符不起作用,因为我想用各种分隔符(如“>”)拆分数组,这使得在不丢失任何字符的情况下在特定字符之
var myArray = "(text1)(text2)(text3)".split(???)
//=> myArray[0] = "text1", myArray[1] = "text2", myArray[2] = "text3"
我应该在“?”中输入什么?或者我应该使用不同的方法
生成“)(“分隔符不起作用,因为我想用各种分隔符(如“>”)拆分数组,这使得在不丢失任何字符的情况下在特定字符之间使用拆分来列出所有可能的分隔符组合非常不实际,因为JavaScript不可能做到这一点,因为您需要对此进行查找(不受支持)。 但是,由于您似乎希望文本位于括号内,因此不必拆分,您只需
匹配不包含括号的最长字符串即可:
myArray = "(text1)(text2)(text3)".match(/[^()]+/g)
请参见对于OP想要的行为,这个答案是最明智的,(不是简单的字符串拆分),但对于例如“(text(1)(text(2)”
)来说,它将失败。您也可以使它与左括号匹配,然后将它们映射出来;匹配(/\([^)]+/g.map(函数(e){return e.slice(1);}
@PaulS当然可以,但这似乎是无效的。而且正确嵌套的东西无论如何都无法匹配。我的意思是,为什么要支持(text(1)(text(2)
)但不支持(1)text)(2)text)
或(te(1)xt)(te(2)xt)
?是的。我在想如何在不需要循环的情况下完成所有这些操作,但需要第二个(
挑战性地不是本节的结尾,而第二个)可能是。但这不是世界上最大的问题。@PaulS。如果你想用JavaScript正则表达式解决它,允许任意嵌套是世界上最大的问题;)请提供一个解释,如果没有,这个答案不是特别有帮助。我想代码说明了一切。这正是我要找的。我们还可以使用“(text1)(text2)(text3)”.split(/[()]+/).filter(String);去掉那个讨厌的小空字符串。
.split(/[()]+/).filter(function(e) { return e; });