JavaScript RegEx不匹配[

约书亚·沃尔什(Joshua Walsh)

我正在为JavaScript创建.LRC文件解析器,但遇到了麻烦。我有以下代码:

var getTimecodes = new RegExp("\[[0-9]{2}:[0-9]{2}\.[0-9]{2}\]", "g");
var testLine = "[00:25.03][00:38.86][03:36.98][03:50.64]but man you should've seen him";
var timecodes = testLine.match(getTimecodes);
var lineText = testLine.replace(getTimecodes, "");

console.log(timecodes);
console.log(lineText);

根据我对RegEx和几个不同的RegEx测试站点(包括完全用JavaScript编写的站点)的理解,我应该得到以下结果:

[“ [00:25.03]”,“ [00:38.86]”,“ [03:36.98]”,“ [03:50.64]”]]

但是男人,你应该见过他的

相反,我得到以下输出:

[“ 00:25.03]”,“ 00:38.86]”,“ 03:36.98]”,“ 03:50.64]”]]

[[[[但是你应该见过他

有人能对此有所启发吗?我可能做过一些愚蠢的事情,但我无法弄清它是什么...

谢谢,YM

阿努巴瓦

\\RegExp构造函数中使用double

var getTimecodes = new RegExp("\\[[0-9]{2}:[0-9]{2}\\.[0-9]{2}\\]", "g");

或者简单地:

var getTimecodes = /\[[0-9]{2}:[0-9]{2}\.[0-9]{2}\]/g;

原因:由于RegExp constructor使用String,因此String需要一个转义,而regex引擎则需要第二个转义。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章