Javascript 更好的正则表达式从URL提取Google视频ID

Javascript 更好的正则表达式从URL提取Google视频ID,javascript,regex,Javascript,Regex,嗨 我使用下面的正则表达式和JS从该url提取这个id 6321890784249785097 但我只从尾巴上切下最后19个字符。我怎样才能做得更防弹?也许有个解释让我学到点什么 url.replace(/.*docId=(\d{19}).*/i,"$1"); 这将剪切docId=后面的19位数字 video[.]google[.]com/googleplayer[.]swf[?]docId=(\d+) 该ID将在参考#1中捕获。如果您只想匹配19位数字,您可以将其与此匹配: video[

我使用下面的正则表达式和JS从该url提取这个id 6321890784249785097

但我只从尾巴上切下最后19个字符。我怎样才能做得更防弹?也许有个解释让我学到点什么

url.replace(/.*docId=(\d{19}).*/i,"$1");
这将剪切
docId=
后面的19位数字

video[.]google[.]com/googleplayer[.]swf[?]docId=(\d+)
该ID将在参考#1中捕获。如果您只想匹配19位数字,您可以将其与此匹配:

video[.]google[.]com/googleplayer[.]swf[?]docId=(\d{19})

这应该会更好一些:

/^.*docId=(\d+)$/


这将匹配“docId=”之前的所有字符,然后给出url末尾之前的所有数字。

这是我在应用程序中用于读取url参数的函数。到目前为止还没有让我失望;)

有关regexp的解释:

  • [\&\?]取查询字符串“?”的开头或参数“&”之间的分隔
  • “name”将是您案例中参数“docId”的名称
  • ([^\&#]+)使用非和的任何字符。
    散列键通常用于单页应用程序。
    括号保留内容的引用
  • val将是一个数组或null/未定义,val[1]是您要查找的值

我发现这个更好用:新的RegExp(/.*docid=([\d-]+)(.*)/I),但谢谢!
video[.]google[.]com/googleplayer[.]swf[?]docId=(\d{19})
urlParam:function(name, w){
    w = w || window;
    var rx = new RegExp('[\&|\?]'+name+'=([^\&\#]+)'),
        val = w.location.href.match(rx);
    return !val ? '':val[1];
}