Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/432.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 替换URL正则表达式_Javascript_Regex - Fatal编程技术网

Javascript 替换URL正则表达式

Javascript 替换URL正则表达式,javascript,regex,Javascript,Regex,编辑:为了澄清,我的问题是:如果输入已经有一个url作为其值,如何用粘贴url替换第一个url 如果用户粘贴包含url的字符串(必须以url开头),我想替换url字符串。在文档加载时,输入已经有一个url作为其值。例如: 如果用户复制字符串中有url,请替换输入中的第一个url字符串 例如: 我们将用用户粘贴替换第一个 我已经使用下面的代码完成了这项工作,但也没有像我所希望的那样工作 $(document).on('paste', 'input.link', function(){ va

编辑:为了澄清,我的问题是:如果输入已经有一个url作为其值,如何用粘贴url替换第一个url

如果用户粘贴包含url的字符串(必须以url开头),我想替换url字符串。在文档加载时,输入已经有一个url作为其值。例如:

如果用户复制字符串中有url,请替换输入中的第一个url字符串

例如:

我们将用用户粘贴替换第一个

我已经使用下面的代码完成了这项工作,但也没有像我所希望的那样工作

$(document).on('paste', 'input.link', function(){
    var $element = $(this);
    setTimeout(function(){
        var $val = $element.val();
        var $exp = /(https?:\/\/(?:w{3}\.)?stackoverflow\.com\/?)+/g;

        if($val.match($exp)){
            var $count = 0;

            $val = $val.replace($exp, function(match) {
                $count++;

                if($count > 1) {
                    return match;
                } else {
                    return '';
                }
            });

            $element.val($val);
        }
    }, 100);
});

测试:

因此,可以肯定的是,我将您的要求理解为:

  • 关于粘贴到输入中
  • 如果现有值为url,粘贴的值为url
  • 用粘贴的url替换现有url
  • 如果是这样,则在粘贴时将持续执行以下操作:

    function escape(str) {
      return str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&");
    }
    
    var url_match = /(https?:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&\/=]*)/;
    
    $('input').on('paste', function() {
        if (url_match.test($(this).val())) {
            var current_value = $(this).val(),
                match_current = new RegExp('^('+escape(current_value)+')(.*)$');
            setTimeout(function() {
                var matches = $('input').val().match(match_current);
                if (matches && matches.length >= 3 && url_match.test(matches[2])) {
                    $('input').val(matches[2]);
                }
            },100);
        }
    });
    

    请参阅工作表

    I。。。不明白你的问题是什么。@VasiliSyrakis刚刚更新了我的问题。仍然不清楚。。。如果你能举几个例子@Bhavik我真的不知道你怎么会不理解这个问题。。。你能看到我的小提琴是吗?这就是一个例子。简而言之:如果输入中有url值,如果用户粘贴了该输入的url(在旧url的末尾),则用用户粘贴的新url替换旧url。我现在清楚了吗?没问题。这是一个有趣的小片段。