更好的RegEx从URL中提取GoogleVideo ID

时间:2010-01-22 19:20:58

标签: javascript regex

HI!

我使用以下正则表达式与JS从该URL中提取此id 6321890784249785097

http://video.google.com/googleplayer.swf?docId=6321890784249785097

url.replace(/^[^\$]+.(.{19}).*/,"$1");

但我只从尾巴上切下最后19个字符。我怎样才能更加防弹?也许有一个解释,以便我学到一些东西?

4 个答案:

答案 0 :(得分:1)

这应该会更好一点:

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

这会匹配“docId =”之前的所有字符,然后在网址结尾处为您提供所有数字。

答案 1 :(得分:0)

url.replace(/.*docId=(\d{19}).*/i,"$1");

这会减少docId=后的19位数字。

答案 2 :(得分:0)

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

ID将在参考文献#1中捕获。如果您只想匹配19位数字,您可以将其置于此:

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

答案 3 :(得分:0)

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

urlParam:function(name, w){
    w = w || window;
    var rx = new RegExp('[\&|\?]'+name+'=([^\&\#]+)'),
        val = w.location.href.match(rx);
    return !val ? '':val[1];
}

关于正则表达式的解释:

  • [\& | \?]接受查询字符串的开头'?'或参数'&'
  • 之间的分离
  • 'name'将是您案例中参数'docId'的名称
  • ([^ \&#] +)取任何不是&的字符。和#。
    哈希键通常用于一个页面的应用程序。
    括号内容保留内容的引用。
  • val将是一个数组或null / undefined,val [1]是您要查找的值