我正在为.LRC制作一个JavaScript文件解析器,但遇到了一个障碍。我有以下代码:
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
发布于 2013-11-17 13:32:07
在\\构造函数中使用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接受字符串,因此字符串需要一个转义,正则表达式引擎需要第二个转义。
https://stackoverflow.com/questions/20031203
复制相似问题