Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/434.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/20.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 为什么我的正则表达式缺少一个字符?_Javascript_Regex_Onkeyup - Fatal编程技术网

Javascript 为什么我的正则表达式缺少一个字符?

Javascript 为什么我的正则表达式缺少一个字符?,javascript,regex,onkeyup,Javascript,Regex,Onkeyup,我有一个非常好的正则表达式函数,在这里调用: <input onkeyup="vimeo();"> 看到了吗?vimeo的“v”缺失,我无法传递这个问题。 如果我删除“v”前面的“/”字符,我会得到重复值,例如: //player.player.player.player.player.player.player.player.vimeo.com/video/VIDEOID 我的替换脚本如下所示: var vimeo = function(){ var str2; $('

我有一个非常好的正则表达式函数,在这里调用:

<input onkeyup="vimeo();">
看到了吗?vimeo的“v”缺失,我无法传递这个问题。 如果我删除“v”前面的“/”字符,我会得到重复值,例如:

//player.player.player.player.player.player.player.player.vimeo.com/video/VIDEOID
我的替换脚本如下所示:

var vimeo = function(){
  var str2;
  $('#url').keyup(function(){
    str2 = $(this).val();
    $(this).val(str2.replace(/(?:http:\/\/)?(?:www\.)?(?:vimeo\.com)\/(.+)/g, '\/\/player/\.\vimeo\.\com\/video/$1'));
  });
};
如何修复丢失的“v”而不重复任何值

更新:

演示链接如下:


问题在于替换字符串。您不需要转义任何字符。replace方法的第二个参数采用字符串,而不是另一个正则表达式

'\/\/player/\.\vimeo\.\com\/video/$1'
您可以这样做:

'//player.vimeo.com/video/$1'
但是,我不知道为什么在输入和url元素上使用keyup事件

我对你的函数做了一点修改,它对我很有用

编辑 因为您只想使用一个字段,所以在用户完成编辑后,您需要使用onchange来格式化url。我更改了函数以反映此更改。注意,您甚至不再需要jQuery了

var vimeo=功能(elem){
var str2=元素值;
elem.value=str2.replace(/(?:http:\/\/)(?:www\)(?:vimeo\.com)\/(.+)/g,“//player.vimeo.com/video/$1”);
};


您希望最终值是什么?我得到了更奇怪的结果。。你的输入是什么?
\v
=>
v
,你为什么要逃避它
\v
是一个垂直选项卡。链接存储在mysql数据库中,然后我用iframe在php上进行回显。我不想逃避它,但如果我做不到,我会得到重复值。是的,这很有效。但我真的很抱歉,我不能制作一个漂亮的现场活动。最后完成的是:这一页应该是所有的生活。(当你们打字时,实时保存在数据库中,回复打字中的链接等)。无论如何,若你们编辑了你们的答案,我接受了,谢谢你们的改进。
'//player.vimeo.com/video/$1'