Javascript正则表达式返回null

car*_*rte 0 javascript regex

我想匹配这个网址:

https://play.spotify.com/user/randomuser/playlist/71ljVu3Ejccu2PzW6iXv0G

随机用户和结束ID正在改变的地方.

我想验证url确实是play.spotify.com链接并匹配该格式.

我有这个javascript函数:

var verify = function(url){
    var re = new RegExp("(https:\/\/play.spotify.com\/user\/\w+?\/playlist\/\w+)", "g");
    var result = re.exec(url);
    console.log(result);
}

verify("https://play.spotify.com/user/useruser/playlist/71ljVu3Ejccu2PzW6iXv0G");
Run Code Online (Sandbox Code Playgroud)

当我使用正则表达式测试器测试它时,它似乎正常工作:

在此输入图像描述

但是,console.log的输出只是null.

我在javascript中做错了什么?为什么网址不匹配?

Ber*_*rgi 5

"(https:\/\/play.spotify.com\/user\/\w+?\/playlist\/\w+)"
Run Code Online (Sandbox Code Playgroud)

你正在逃避字符/w这里,这在字符串文字中是不必要的.你的字符串相当于

"(https://play.spotify.com/user/w+?/playlist/w+)"
Run Code Online (Sandbox Code Playgroud)

这显然不是你正在寻找的正则表达式.

不要使用RegExp构造函数,使用正则表达式文字:

var re = /(https:\/\/play.spotify.com\/user\/\w+?\/playlist\/\w+)/g;
Run Code Online (Sandbox Code Playgroud)

如果new RegExp由于某种原因你真的需要使用,你必须转义字符串中的反斜杠字符:new RegExp("(https://play.spotify.com/user/\\w+?/playlist/\\w+)", "g").