Использование Regex с Javascript - PullRequest
0 голосов
/ 18 января 2010

Я пытаюсь сделать это кое-что в одном из моих плагинов CKEditor:

onOk:function(){
    var sInsert=this.getValueOf('info','insertcode_area');
    if ( sInsert.length > 0 ) {
    regex = new RegExp('(?<=\?v=)([-a-zA-Z0-9_-]+)', 'gi');

    url = 'http://www.youtube.com/v/'+sInsert.match(regex);
        sInsert = '<object type="application/x-shockwave-flash" data="'+url+'" width="425" height="350"><param name="movie" value="'+url+'" /><a href="http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash&#038;promoid=BIOW" target="blank"><img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get flash player to play to this file" width="88" height="31" /></a><br /></object>';

        e.insertHtml(sInsert);
  }
}

Что предполагается сделать: сопоставьте видеокод YouTube с введенным URL-адресом, возьмите его и объедините с моей строкой URL, чтобы URL был действительным и встраиваемым.

Но сейчас я получаю эту ошибку:

invalid quantifier ?<=?v=)([-a-zA-Z0-9_-]+)

Так что я предположил, что это нормальная ошибка, и поскольку я не играю с регулярными выражениями очень часто, возможно, я никогда не видел этого :) Так что, если кто-то может помочь мне, это было бы здорово

Спасибо!

Ответы [ 2 ]

7 голосов
/ 18 января 2010

Вы используете «позитивный взгляд» (?<=), который не поддерживается javascript

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

Вот как я наконец это сделал:

// First I replace those, so it'll become a valid YouTube embeddable URL.    
url = sInsert.replace('watch?v=', 'v/');
// Then I remove all the crap after the URL.
url = url.replace(url.substr(url.indexOf('&', 0), url.length), '');

Не регулярное выражение, но мы делаем то, что можем, с тем, что имеем;)

Спасибо в любом случае!

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