jQuery正则表达式匹配返回空字符串

时间:2014-01-20 10:59:35

标签: javascript jquery regex

我需要删除嵌入的YouTube视频的ID,所以我的网址是这样的:

www.youtube.com/embed/[someID]&rel=0&controls=0&showinfo=0&frameborder=1&modestbranding=1

我想要的只是[someID]字符串。我已声明一个空数组来存储正则表达式匹配;

var videoID = [];

我最接近解决方案的是:

videoID = videoID.match("embed/(\w*)");

但这导致以下结果:

video[0] ("embed/")
video[1] ()

3 个答案:

答案 0 :(得分:1)

使用此:

url = "www.youtube.com/embed/someID&rel=0&controls=0&showinfo=0&frameborder=1&modestbranding=1";

然后使用:

var videoID = url.match(/embed\/(\w*)/); // regex 

或者其他:

var videoID = url.match("embed/\\w*)"); // regex object

两者都会提供输出

["embed/someID", "someID"]

如果您提供字符串,那么String#match方法将尝试构建RegExp对象,对于这种情况,您需要使用\\w而不是\w

答案 1 :(得分:1)

试试这个你可能会得到身份证明。我没有使用正则表达式,但我们仍然可以像上面的URL一样从上面的演示中获取id。

var url ="www.youtube.com/embed/[someID]&rel=0&controls=0&showinfo=0&frameborder=1&modestbranding=1";

var urlQueries = url.split('/'); 
var queryParameters = urlQueries[2].split('&'); // arrays of all query parameters
var id = queryParameters[0]; // get ids at index 0

工作演示here

答案 2 :(得分:0)

我不确定是否可以执行Positive-Lookbehinds,但请尝试(?<=embed\/)([^&]*)

如果没有,则(?:embed\/)([^&]*)更接近您的示例。


演示:

http://regex101.com/r/nW5uL8