URL 草稿规范验证方法
URL draft specification validate method
我一直在研究现在在Chrome Canary中实现的新URL规范,它看起来非常有用。
有没有办法在将 URI 传递到URL
对象之前对其进行验证?
例如
var urlToCheck = "http//www.google.com";
if(URL.isValid(urlToCheck)) {
var u = new URL(urlToCheck, baseUrl);
console.log(u.hostname);
}
我在链接的规范文档中看不到任何内容。我真的不想仅仅为了检查 URI 是否有效而处理抛出的异常。
实际上,URL 构造函数的 2 参数版本接受任何内容作为其第一个参数:
try{
new URL(null, 'http://www.example.com');
new URL({ob:'jects',even:{nested:'ones'}}, 'http://www.example.com');
new URL(['arrays'], 'http://www.example.com');
new URL(/regexes/, 'http://www.example.com');
new URL(false, 'http://www.example.com');
new URL(undefined, 'http://www.example.com');
console.log('new URL() takes any value as its first parameter!');
}catch(e){}
这意味着您不必验证这两个 URL;您只需验证基本 URL。因此,像这样的简单解决方案就足够了:
URL.isValid = function(url) {
try{
new URL(url);
} catch(e) {
return false;
}
return true;
};
您在评论中说,您无法判断是基本URL还是无效的URL,因此您宁愿分别检查它们。如果是这样,为什么不这样做呢?例如,像这样:
URL.isValid = function(url, base) {
if(base !== undefined) {
try {
new URL(base);
}
catch(e) {
return false;
}
}
try {
new URL(url, base);
return true;
}
catch(e) {
return false;
}
});
允许您同时检查两者,如果愿意,或者按照您所说的,分别检查URL.isValid(base),首先检查URL.isValid(base),然后检查URL.isValid(url,base)。如果第一次检查失败,您就知道 base 无效,如果第二次检查失败,您就知道 url 无效。如果您确实需要,则可以根据哪个 url 无效从 .isValid 返回单独的错误代码。
您可以使用
此函数来验证网址:
function isValidUrl(url) {
return url.match(/^(ht|f)tps?:'/'/[a-z0-9-'.]+'.[a-z]{2,4}'/?([^'s<>'#%"','{'}''|'''^'[']`]+)?$/);
}
相关文章:
- 网络应用程序的正确instagram身份验证方法(没有instagram帐户的用户)
- 日/月/年格式的日期的 Jquery 验证方法
- 等待 Google Geocoder 会产生 jquery 自定义验证方法
- URL 草稿规范验证方法
- 验证方法在主干网中不起作用.js
- 如何重构重复的 jquery 验证方法
- Jquery 验证方法
- 带有自定义输入框的 AngularJS 验证方法
- 在 JS 中的表单验证方法中获取表单提交方法的输出
- 哪种验证方法更好
- 在angularJS项目中编写验证方法的最佳实践
- 添加自定义jquery.验证方法导致Uncaught TypeError: Cannot read property &
- 为什么我的邮政编码验证方法不能正常工作
- 验证方法以从列表中选择至少一个项目
- 最有效的jquery字段验证方法
- 自定义验证方法不工作- jQuery验证插件
- 不合逻辑的Passport验证方法参数
- 如何用内部测试框架验证方法是否被调用?
- if / else验证方法之间的区别
- Meteor mdg:不使用简单模式的验证方法