再次运行regex搜索并替换javascript

再次运行regex搜索并替换javascript,javascript,regex,Javascript,Regex,我有以下代码: <script type="text/javascript"> document.addEventListener("DOMContentLoaded", function(event) { var field1 = document.getElementById("field_lp_video"); field1.addEventListener("input", combineFields); function combineFields(){ var v

我有以下代码:

<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>

document.addEventListener(“DOMContentLoaded”),函数(事件){
var field1=document.getElementById(“field_lp_video”);
字段1.addEventListener(“输入”,组合字段);
函数combineFields(){
var val1=field1.value;
var regExp=/^.*(youtu.be\/|v\/|u\/\w\/|embed\/|watch\?v=\&v=)([^和\?]*)。/;
var val1match=val1.match(regExp);
var val1re=VAL1匹配[2];
var oldURL=document.getElementById(“changeThisMovie”).innerHTML;
var oldURLmatch=oldURL.match(regExp);
var res=oldURL.replace(“yesc3aists2y”,val1re);
document.getElementById(“changeThisMovie”).innerHTML=res;
}
});
它将客户端插入的youtube url带“field_lp_video”id并仅捕获视频id。然后插入它,用这个新的客户端替换我的旧视频id(yeC3AisTs2Y)

效果很好

问题是:我正试图让客户改变视频的次数,因为他想,同样的过程将发生,但现在它将不得不取代他的最后一个视频id(而不是我原来的第一个)与他现在插入的

所以我试着:

<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>

document.addEventListener(“DOMContentLoaded”),函数(事件){
var field1=document.getElementById(“field_lp_video”);
字段1.addEventListener(“输入”,组合字段);
函数combineFields(){
var val1=field1.value;
var regExp=/^.*(youtu.be\/|v\/|u\/\w\/|embed\/|watch\?v=\&v=)([^和\?]*)。/;
var val1match=val1.match(regExp);
var val1re=VAL1匹配[2];
var oldURL=document.getElementById(“changeThisMovie”).innerHTML;
var oldURLmatch=oldURL.match(regExp);
var res=oldURL.replace(oldURLmatch,val1re);
document.getElementById(“changeThisMovie”).innerHTML=res;
}
});
但它不起作用。它只是再次提供相同的视频id

有什么想法吗


谢谢

您只是想用另一个URL的视频ID替换一个URL的视频ID,对吗?在这种情况下,您需要对两个正则表达式结果(而不仅仅是一个)使用索引。更改以下行:

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


那就应该成功了

太好了!现在效果很好!谢谢
var res = oldURL.replace(oldURLmatch[2], val1re);