JavaScript RegEx不匹配[

Jos*_*lsh 3 javascript regex

我正在为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);
Run Code Online (Sandbox Code Playgroud)

根据我对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

anu*_*ava 5

\\RegExp构造函数中使用double :

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

或简单地说:

var getTimecodes = /\[[0-9]{2}:[0-9]{2}\.[0-9]{2}\]/g;
Run Code Online (Sandbox Code Playgroud)

原因:因为RegExp constructor需要一个String因此String需要一个转义和正则表达式引擎需要第二次转义.