javascript - URL 草案规范验证方法

标签 javascript parsing url

我一直在寻找新的 URL specification现在已在 Chrome Canary 中实现,看起来非常有用。

在将 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;
};

关于javascript - URL 草案规范验证方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19653130/

相关文章:

api - 以RESTful方式在资源上调用服务器端方法

javascript - 括号围绕作业完成什么任务

javascript - HTML5 服务器端事件 : EventSource vs. 包装的 WebSocket

javascript - 根据选项卡内的文本链接的哈希 ID 动态选择 jquery UI 选项卡

java - Scanner#nextDouble 无法解析 5.2 (InputMismatchException)

java - com.fasterxml.jackson.databind.JsonMappingException : Can not deserialize instance of TestAcceptanceCriteria out of START_ARRAY token

javascript - 用 JavaScript 替换 URL 中的所有特殊字符,如 'é'

Javascript 文档.Referrer

c# - 从框括号内的字符串中提取子字符串

http url 输入参数