if(/\[offset\:(\-?\d+)\]/i.test(lyric)) 里面的正则表达式看不懂,请详细讲解一下,还有offset的用法

offset怎么起作用的实在不明白,和正则表达式组合起来让人看不懂。随便回答不给分

这代码是 js 的代码,


\[offset\: 和 \] 是普通文本,分别是 “[offset" 和 ”]“,这些是要求在字符串中必须出现的,

然后后面的

(\-?\d+)



这里的 \- 表示 ”-“ 字符,其后面的元字符?表示前面的”-“可有可无(有的话,最多为一个)。

后面的 \d 表示一位数字,而其后的元字符 + 表示前面的 \d 至少有一个或更多个。

那么,我们就知道 


\-?\d+



是匹配一个正负整数的了,而它左右的圆括号是为了捕获数字这部分的内容,这里把数字部分捕获后,会存入 $1 组里。


在js中,正则前后要各带上个斜杠,那就是 /\[offset\:(\-?\d+)\]/,后面再带上个 i 参数表示忽略大小写(对大小写不敏感),

后面的 test 是正则里的一个测试方法,这里将 lyric 变量的字符串值传入进去进行匹配测试,如果传入的内容是符合”[offset:正或负的整数]“格式的话,那就返回 true,否者返回 false。



lyric = "[Offset:-123456]"; // 再试试 lyric = "[Offset: 123456789]";
if(/\[offset\:(\-?\d+)\]/i.test(lyric)){
alert("匹配成功");
}else{
alert("匹配失败");
}

追问

 

 

这是歌词内容, /\[offset\:(\-?\d+)\]/是捕获每一个中括号里的值,还是具体某一个。如果是具体某一个,请指出来.谢谢!

追答

呵呵,原来是歌词啊,这样的话,什么也捕获不了。

对于表达式 /\[offset\:(\-?\d+)\]/ ,它会匹配“[offset:正负数]”的模式的文本,然后捕获括号里的内容到$1组中(也就是 \-?\d+ 匹配到的部分)

你想获取的是哪部分内容?

追问

 

 

 

这是一个解析lrc歌词的函数的开头,我不知道 RegExp.$1返回的是什么,如果可以的话请把下面的正则表达是讲解一下,我不知道他们分别匹配什么,歌词如上

追答

你看前面离它最近的那正则表达式,从左往右数第一个括号,$1就是这个括号匹配的内容,$2 是第二个,$3是第三个,以此类推

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-04-13
就是匹配类似[offset:数字] -可有可无, offset就是匹配这个词
相似回答