Лучше RegEx для извлечения GoogleVideo ID из URL - PullRequest
0 голосов
/ 22 января 2010

HI!

Я использую следующее регулярное выражение с JS, чтобы извлечь этот идентификатор 6321890784249785097 из этого URL

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

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

Но я только вырезал последние 19 символов из хвоста. Как мне сделать более пуленепробиваемые? Может быть, с объяснением, чтобы я чему-то научился?

Ответы [ 4 ]

1 голос
/ 22 января 2010

Это должно работать немного лучше:

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

Это соответствует всем символам вплоть до 'docId =', затем выдает все цифры после этого до конца URL.

0 голосов
/ 22 января 2010

Вот функция, которую я использую в нашем приложении для чтения параметров 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] искомое значение
0 голосов
/ 22 января 2010
video[.]google[.]com/googleplayer[.]swf[?]docId=(\d+)

Идентификатор будет записан в ссылке # 1. Если вы просто хотите сопоставить 19 цифр, вы можете указать следующее:

video[.]google[.]com/googleplayer[.]swf[?]docId=(\d{19})
0 голосов
/ 22 января 2010
url.replace(/.*docId=(\d{19}).*/i,"$1");

это сокращает 19 цифр, следующих за docId=.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...