永发信息网

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

答案:2  悬赏:30  手机版
解决时间 2021-11-16 14:12
  • 提问者网友:自食苦果
  • 2021-11-15 16:38
if(/\[offset\:(\-?\d+)\]/i.test(lyric)) 里面的正则表达式看不懂,请详细讲解一下,还有offset的用法
最佳答案
  • 五星知识达人网友:等灯
  • 2021-11-15 17:28
这代码是 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楼网友:不甚了了
  • 2021-11-15 17:47
就是匹配类似[offset:数字] -可有可无, offset就是匹配这个词
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯