如何在javascript中验证url?
我有一个输入类型来输入url,还有一个选择标记来选择url类型。 现在,我想检查所选类型和输入的url是否匹配,比如,用户不能输入instagram url并将url类型选择为facebook 所以我想验证一下。我尝试使用一个函数进行验证,验证url的效果很好,但我还想验证facebook和instagram是否为照片url或视频url 现在,它通常为facebook.com进行验证如何在javascript中验证url?,javascript,validation,url,Javascript,Validation,Url,我有一个输入类型来输入url,还有一个选择标记来选择url类型。 现在,我想检查所选类型和输入的url是否匹配,比如,用户不能输入instagram url并将url类型选择为facebook 所以我想验证一下。我尝试使用一个函数进行验证,验证url的效果很好,但我还想验证facebook和instagram是否为照片url或视频url 现在,它通常为facebook.com进行验证 <!DOCTYPE html> <html lang="en"> <head>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Post</title>
</head>
<body>
<form class="postForm" id="postForm" method="post" action="addPost.php" enctype="multipart/form-data">
<fieldset>
<legend>Please add the details below </legend>
<p>
<div id="link" style="display: none">
<p>
<label for="url">URL (required)</label>
<input id="url" type="url" name="url" required>
</p>
<p>
<label for="urlType">Select Url Type :(required)</label>
<select name="urlType" id="urlType">
<option value="">Select Url Type...</option>
<!-- <option value="0">Server Image</option>
<option value="1">Server Video</option>-->
<option value="2">YouTube Video</option>
<option value="3">Vimeo Video</option>
<option value="4">Facebook Image</option>
<option value="5">Facebook Video</option>
<option value="6">Instagram Image</option>
<option value="7">Instagram Video</option>
<option value="-1">Other</option>
</select>
</p>
</div>
<div id="filediv" style="display: none">
Select file to upload:
<br><br>
<input name="file" type="file" id="fileToUpload"><br><br>
</div>
<p>
<input type="hidden" name="action_type" id="action_type_id"/>
<input type="hidden" name="id" id="p_id"/>
<input type="submit" name="submit" id="submit" value="Submit">
</p>
</fieldset>
<div class="result" id="result"></div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdn.jsdelivr.net/jquery.validation/1.16.0/jquery.validate.min.js"></script>
<script>
$('#postForm').validate({ // initialize the plugin
rules: {
title: {
required: true,
minlength : 2
},
url: {
required: true
},
desc: {
required : true,
minlength : 2
},
keywords : {
required : true,
minlength : 2
},
urlType :
{
required : true
},
postType :
{
required : true
},
category :
{
required : true
},
file :
{
required : true
}
},
submitHandler: function (form) { // for demo
var url = document.getElementById('urlType').value;
if(validate_url(document.getElementById('url').value) == 'facebook' && url != 4)
{
alert('Please enter valid facebook image url or select valid url type.');
}
else if(validate_url(document.getElementById('url').value) == 'facebook' && url != 5)
{
alert('Please enter valid facebook video url or select valid url type.');
}
else if(validate_url(document.getElementById('url').value) == 'instagram' && url != 6)
{
alert('Please enter valid instagram image url or select valid url type.');
}
else if(validate_url(document.getElementById('url').value) == 'instagram' && url != 7)
{
alert('Please enter valid instagram video url or select valid url type.');
}
else if(validate_url(document.getElementById('url').value) == 'vimeo' && url != 3)
{
alert('Please enter valid vimeo video url or select valid url type.');
}
else if(validate_url(document.getElementById('url').value) == 'youtube' && url != 2)
{
alert('Please enter valid youtube video url or select valid url type.');
}
else {
userAction('add');
}
}
});
function userAction(type,id){
var statusArr = {add:"added",edit:"updated",delete:"deleted"};
if (type == 'add') {
$('#action_type_id').val(type);
$('#p_id').val(id);
}
$.ajax({
type: 'POST',
url: 'addPost.php',
data: $('#postForm').serialize(),
success:function(report){
// replace data to report
$(".result").html(report);
$("#postForm").trigger('reset');
}
});
}
function validate_url(url)
{
if (/^(https?:\/\/)?((w{3}\.)?)facebook.com\/.*/i.test(url))
return 'facebook';
if (/^(https?:\/\/)?((w{3}\.)?)instagram.com\/.*/i.test(url))
return 'instagram';
if (/^(https?:\/\/)?((w{3}\.)?)vimeo.com\/.*/i.test(url))
return 'vimeo';
if (/^(https?:\/\/)?((w{3}\.)?)youtube.com\/.*/i.test(url))
return 'youtube';
return 'unknown';
}
</script>
</form>
</body>
</html>
邮递
请在下面添加详细信息
URL(必需)
选择Url类型:(必选)
选择Url类型。。。
YouTube视频
维梅奥视频
Facebook形象
Facebook视频
Instagram图像
Instagram视频
其他
选择要上载的文件:
$('#postForm')。验证({//初始化插件
规则:{
标题:{
要求:正确,
最小长度:2
},
网址:{
必填项:true
},
描述:{
要求:正确,
最小长度:2
},
关键词:{
要求:正确,
最小长度:2
},
URL类型:
{
必填项:true
},
postType:
{
必填项:true
},
类别:
{
必填项:true
},
文件:
{
必填项:true
}
},
submitHandler:函数(表单){//用于演示
var url=document.getElementById('urlType')。值;
if(validate_url(document.getElementById('url').value)='facebook'&&url!=4)
{
警报('请输入有效的facebook图像url或选择有效的url类型');
}
else if(validate_url(document.getElementById('url').value)='facebook'&&url!=5)
{
警报('请输入有效的facebook视频url或选择有效的url类型');
}
否则如果(验证url(document.getElementById('url').value)='instagram'&&url!=6)
{
警报('请输入有效的instagram图像url或选择有效的url类型');
}
否则如果(验证url(document.getElementById('url').value)='instagram'&&url!=7)
{
警报('请输入有效的instagram视频url或选择有效的url类型');
}
否则如果(验证url(document.getElementById('url').value)='vimeo'&&url!=3)
{
警报('请输入有效的vimeo视频url或选择有效的url类型');
}
否则如果(验证url(document.getElementById('url').value)='youtube'&&url!=2)
{
警报('请输入有效的youtube视频url或选择有效的url类型');
}
否则{
用户操作(“添加”);
}
}
});
函数userAction(类型、id){
var statusArr={add:“add”,edit:“updated”,delete:“deleted”};
如果(类型==“添加”){
$('#action_type_id').val(type);
$('p#u id').val(id);
}
$.ajax({
键入:“POST”,
url:'addPost.php',
数据:$('#postForm')。序列化(),
成功:功能(报告){
//替换要报告的数据
$(“.result”).html(报告);
$(“#postForm”).trigger('reset');
}
});
}
函数验证url(url)
{
如果(/^(https?:\/\/)((w{3}\)?)facebook.com\/.*/i.test(url))
返回“facebook”;
如果(/^(https?:\/\/)((w{3}\)?)instagram.com\/.*/i.test(url))
返回“instagram”;
如果(/^(https?:\/\/)((w{3}\)?)vimeo.com\/.*/i.test(url))
返回“vimeo”;
如果(/^(https?:\/\/)((w{3}\)?)youtube.com\/.*/i.test(url))
返回“youtube”;
返回“未知”;
}
我如何验证链接是否用于facebook图像、facebook视频或instagram图像、instagram视频
请帮忙。。谢谢。我接着看了各种不同的url格式,下面是一些: Facebook视频
https://video.fsnc1-1.fna.fbcdn.net/v/*.mp4
Facebook图片
https://scontent.fsnc1-1.fna.fbcdn.net/v/*.jpg
Instagram视频
https://instagram.fsnc1-1.fna.fbcdn.net/*.mp4
Instagram图像
https://instagram.fsnc1-1.fna.fbcdn.net/*.jpg
对于regex,如果您想查看它们是否由Facebook托管,您可以验证域是否为fbcdn.net
。对于instagram,他们的所有资产似乎都以子域名instagram.*.fbcdn.net
请注意,fsnc1-1.fna
可能与CDN请求最近服务器的位置有关,这可能会发生变化。例如,在巴西进行网页测试时,会显示来自sco的资产