2015-05-13 4 views
1

У меня есть этот код:Запуск поиска регулярных выражений и заменить Javascript снова

<script type="text/javascript"> 
document.addEventListener("DOMContentLoaded", function(event) { 
var field1 = document.getElementById("field_lp_video"); 
field1.addEventListener("input", combineFields); 
function combineFields(){ 
    var val1 = field1.value; 
    var regExp = /^.*(youtu.be\/|v\/|u\/\w\/|embed\/|watch\?v=|\&v=)([^#\&\?]*).*/; 
    var val1match = val1.match(regExp); 
    var val1re = val1match[2]; 
    var oldURL = document.getElementById("changeThisMovie").innerHTML; 
    var oldURLmatch = oldURL.match(regExp); 
    var res = oldURL.replace("yeC3AisTs2Y", val1re); 
    document.getElementById("changeThisMovie").innerHTML = res; 
} 
}); 
</script> 

, который принимает URL YouTube, вставленный клиентом в поле ввода с «field_lp_video» ид и захватывает только идентификатор видео. то он вставляет его, заменив мой старый идентификатор видео (yeC3AisTs2Y) новым клиентом.

Он отлично работает!

Проблема заключается в следующем: я пытаюсь разрешить клиенту изменять видео столько раз, сколько он хочет, и что тот же процесс произойдет, но теперь ему придется заменить свой последний идентификатор видео (а не мой первоначальный первый один) с тем, который он вставляет сейчас.

Так я пробовал:

<script type="text/javascript"> 
    document.addEventListener("DOMContentLoaded", function(event) { 
    var field1 = document.getElementById("field_lp_video"); 
    field1.addEventListener("input", combineFields); 
    function combineFields(){ 
     var val1 = field1.value; 
     var regExp = /^.*(youtu.be\/|v\/|u\/\w\/|embed\/|watch\?v=|\&v=)([^#\&\?]*).*/; 
     var val1match = val1.match(regExp); 
     var val1re = val1match[2]; 
     var oldURL = document.getElementById("changeThisMovie").innerHTML; 
     var oldURLmatch = oldURL.match(regExp); 
     var res = oldURL.replace(oldURLmatch, val1re); 
     document.getElementById("changeThisMovie").innerHTML = res; 
    } 
    }); 
    </script> 

Но это не работает. он просто дает тот же идентификатор видео снова.

Любые идеи?

Спасибо!

ответ

1

Вы просто пытаетесь заменить идентификатор видео одного URL с идентификатором видео другого права? В этом случае вы захотите использовать индексирование для обоих результатов регулярного выражения (а не только для одного). Измените следующую строку:

var res = oldURL.replace(oldURLmatch, val1re); 

к:

var res = oldURL.replace(oldURLmatch[2], val1re); 

Это должно сделать трюк!

+0

Отлично! Работает отлично! Благодаря! – Ben

Смежные вопросы