跳到主要内容

js 的 URL 验证函数

· 阅读需 1 分钟
Slipeda

基本方法

function checkUrl(string) {
let givenURL
try {
givenURL = new URL(string)
} catch (error) {
console.log('error is', error)
return false
}
return true
}

此种方法可能会漏掉一些不合规但是有效的 url, 譬如:youtube://abcd, a://1.2.3.4@1.2.3.4

再确认协议

function checkHttpUrl(string) {
let givenURL
try {
givenURL = new URL(string)
} catch (error) {
console.log('error is', error)
return false
}
return givenURL.protocol === 'http:' || givenURL.protocol === 'https:'
}

使用正则表达式

function isValidURL(string) {
var res = string.match(
/(https?:\/\/(?:www\.|(?!www))[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9]\.[^\s]{2,}|www\.[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9]\.[^\s]{2,}|https?:\/\/(?:www\.|(?!www))[a-zA-Z0-9]+\.[^\s]{2,}|www\.[a-zA-Z0-9]+\.[^\s]{2,})/gi
)
return res !== null
}

参考: Secure JavaScript URL validation