正则表达式分割字符串避免双标记

时间:2014-05-07 14:04:05

标签: javascript arrays regex string split

为了使用javascript将字符串值拆分为数组,我需要使用分隔符进行拆分。重复分隔符表示数组中的子值,例如

  

abc +!+; def +!+!+; 123 +!+; xyz

应分为abc,[def,123],xyz

我最近的表达式是((?:+!(?!+!))+ \; | $)但是想到它可能是我最初开始的那个,因为我经历了这么多的变化从那以后。

可能有一个非常明显的答案,但在看似永恒之后,我现在感到难过。我看了一下regex to parse string with escaped characters和类似的文章虽然不是同样的问题,但是基本上停了下来。

在某个地方,有人会比我更了解正则表达式,并希望他们有答案

1 个答案:

答案 0 :(得分:1)

我通过.split()使用\b\+!\+;\b

来实现此目的
\b\+!\+!\+;\b

然后:

!\+

等等,等等。您需要将其转换为递归函数,但我创建了一个基本的basic pattern来帮助您入门。首先,我们使用第一个表达式拆分字符串。然后我们通过添加var string = 'abc+!+;def+!+!+;123+!+;xyz', data = string.split(/\b\+!\+;\b/); var regex = /\b\+!\+!\+;\b/ for(var i = 0; i < data.length; i++) { var string = data[i]; if(string.match(regex)) { data[i] = string.split(regex); } } console.log(data); // ["abc", ["def", "123"], "xyz"] 来创建我们的新表达式(这可以很容易地动态完成)。现在我们可以遍历我们的初始数组,查看字符串是否与我们的新表达式匹配,以及它是否再次拆分它。

{{1}}

我将离开的任务是使其成为OP的递归功能。如果你想要一些方向,我可以尝试提供一些更多的见解。