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'