用于分割字符串的正则表达式,避免使用双记号
regular expression to split string avoiding double tokens
为了将字符串值拆分为使用javascript的数组,我需要使用分隔符进行拆分。重复分隔符表示数组中的子值,例如
abc + ! +; def + + +, 123 + ! ! ! +; xyz
应该分割成abc, [def, 123], xyz
我最接近的表达式是((?:+!(?!+!))+';|$),但考虑到它可能是我第一次开始的表达式,因为从那时起我经历了这么多的变化。
可能有一个显而易见的答案,但在似乎永恒之后,我现在被难住了。我看了看regex来解析带有转义字符的字符串,和类似的文章,虽然不是相同的问题,但基本上是停止了想法。
在某个地方,有人会比我更了解正则表达式,希望他们有一个答案
我通过使用.split()
和这个基本模式得到了这个工作:
'b'+!'+;'b
然后:
'b'+!'+!'+;'b
等等。您需要将其转换为递归函数,但是我制作了一个基本的JSFiddle来帮助您入门。首先,使用第一个表达式拆分字符串。然后我们通过添加!'+
来创建新的表达式(这可以很容易地动态完成)。现在我们可以循环遍历初始数组,看看字符串是否匹配我们的新表达式,以及是否再次拆分它。
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"]
我把使它成为递归函数的任务留给了OP.如果你需要一些指导,我可以试着提供一些更多的见解。
相关文章:
- 使用正则表达式捕获“”并分割成阵列
- 如何将图像分割成多个部分
- 在文本区域的焦点上分割渐变
- 如何分割由JavaScript中使用正则表达式的多个部分组成的字符串
- 使用自定义记号创建可缩放的Y轴
- 用逗号分割字符串,格式化后显示
- 如何从日期中分割x个字符
- 在javascript中用逗号分隔的字符串分割值
- d3.js yaxis没有正确绘制所有记号
- 在浏览器窗口中创建动态灵活的分割标记
- 如何在JavaScript中每隔第n个字符分割一个字符串
- 将HTML5画布(视频)元素分割成若干块
- 在Iframe中选择元素分割
- 如何使用分割来分割网页,以及如何在网页的这些部分之间提供链接
- 在所选选项卡JQuery上分割文本fadeIn()
- 将图像作为轴记号放在d3.js中
- 分割数组并将其放入对象中
- 代码在第7次分割后中断
- JS/Jquery:字符串到单词的文本分割脚本使用字典和最长匹配
- 用于分割字符串的正则表达式,避免使用双记号