当前位置:优学网  >  在线题库

关于域名的js正则问题

发表时间:2022-06-22 17:51:38 阅读:114

求一个正则 希望是必须要http://开头

http://www.segmentfault.com         //true
http://www.segmentfault.com:8080    //true
http://10.50.1.50                   //true
http://10.50.1.50:2000              //true
http://10.50.1.50:2000/temp/test    //true

http://10.50.1.50:                    //false
http://10.50.1.                       //false
http://www.segmentfault.com:a         //false
🎖️ 优质答案
  • 可以通过 URLPattern 来匹配检测网址

    const pattern = new URLPattern({ protocol: 'http' }); // 指定主机为 http
    pattern.test('http://www.segmentfault.com:8080') // true
    pattern.test('http://www.segmentfault.com:a') // false(port只能为数字)
    pattern.test('http://10.50.1.50:2000/temp/test') // true
    

    不过,按照网址的规则,以下两个都应该是合法的,所以这个方法也通过了

    http://10.50.1.50:
    http://10.50.1.     
  • /^http:\/\/[\w.-]+(?:\.[\w\.-]+)+[\w\-\._~:/?#[\]@!\$&'\*\+,;=.]+$/


    另:不建议用正则完成,js 有原生的方法可以检验

    const isValidUrl = url => {
        try {
            new URL(url)
            return true
        }
        catch {
            return false
        }
    }
  • 相关问题