用js,正则表达式解析歌词的问题。

疯云林渡
  • 271
["[00:03.92]
", "[00:12.84]
", "[00:20.13]是否经过一些事一些情
", "[00:25.95]才会更懂得爱你
", "[00:34.68]我所碰过的纠缠 还有难过的遗憾
", "[00:41.64]不可能没有意义
", "[00:47.46]
", "[00:48.23]彷佛天空下过雨飘过云
", "[00:53.84]才会更接近大地
", "[01:02.51]我不再随便疯狂 却不能停止渴望
", "[01:09.38]就当我承诺自己答应你
", "[01:15.25]
", "[01:15.76]我献出我的最美的
", "[01:19.92]最好的最后的爱一次
", "[01:25.13]成熟的爱一次
", "[01:29.82]愿以生命完成余下的生命
", "[01:36.15]我会的陪你活得更美丽
", "[01:43.79]不为别的爱着你
", "[01:47.71]爱着你爱着你就像爱自己
", "[01:55.53]我会的如果某天遇见了你
", "[02:03.84]真的我会如此爱你 爱你
", "[02:23.58]
", "[02:25.49]彷佛天空下过雨飘过云
", "[02:31.15]才会更接近大地
", "[02:39.88]我不再随便疯狂 却不能停止渴望
", "[02:46.87]就当我承诺自己答应你
", "[02:52.72]
", "[02:53.19]我期待你的最美的
", "[02:57.30]最好的最后的爱一次
", "[03:02.47]成熟的爱一次
", "[03:07.35]愿以生命完成余下的生命
", "[03:13.52]我会的陪你活得更美丽
", "[03:20.84]我每一天的仰慕你
", "[03:25.09]劝告你鼓励你更加爱自己
", "[03:32.90]我会的就算还没有遇见你
", "[03:41.19]真的我已如此爱你 爱你
", "[03:58.77]"]
[00:03.92]

这是我其中的一段歌词。我已经根据换行符分割了每句歌词,目前是想把这个歌词的时间提取出来存在一个数组了。代码如下

 console.log(data);
            console.log(data.lyric.split(/\n/));
            vm.musicText.lyric = data.lyric.split(/\n/);
            for(var i in vm.musicText.lyric){
                console.log(vm.musicText.lyric[i]);
                var re = /[[^[]]+]/g
                console.log(vm.musicText.lyric[i].split(re));
            }
            vm.musicText.name = data.name;

但是提取错误请问下什么原因呢?那正确的表达式改是怎么写呢

回复
阅读 2.7k
3 个回答

//list 是你那个数组;

for(var i in list)
{

var str = list[i];
var re = /^\[+[0-2][0-4]:[0-5][0-9]\.[0-5][0-9]\]/;
console.log(i,'==>',str.match(re));

}

let pattern = /\[\d{2}:\d{2}\.\d{2}\]/g
let arr = lyricsText.match(pattern)
console.log(arr)

这样就能把时间提取到数组里面了,也不需要换行什么的。

var times = [],
    lrcData = {}

list.forEach(function(val, index) {
  var arr = val.match(/\[(.+)\](.+)?/)

  times[index] = arr[1]
  lrcData[arr[1]] = arr[2] ? arr[2] : ''
})
你知道吗?

宣传栏