项目中经常会用到表单验证中对url的校验,js中可以直接用new URL(xxx)
校验,
function url(control: FormControl) {
const input = control.value, e = {invalidUrl: true}
try {
// tslint:disable-next-line: no-unused-expression
new URL(input)
} catch (err) {
return e
}
}
但是上述校验方法不能兼容www.xxx.xx
的情况,只能认证http(s)或者ftp开头url的合法性。
正则表达式:/^(?:http(s)?:\/\/)?[\w.-]+(?:\.[\w\.-]+)+[\w\-\._~:/?#[\]@!\$&'\*\+,;=.]+$/
上面正则表达式验证对以下类型网址都有效,可以去https://regexr.com/在线验证下
https://www.example.com
http://www.example.com
www.example.com
example.com
http://blog.example.com
http://www.example.com/product
http://www.example.com/products?id=1&page=2
http://www.example.com#up
http://255.255.255.255
255.255.255.255
http://invalid.com/perl.cgi?key= | http://web-site.com/cgi-bin/perl.cgi?key1=value1&key2
http://www.site.com:8008
结果: