URL与用户名和密码匹配



我有一个用于验证IP地址和域名的正则表达式,到目前为止运行良好

/** Checks if a URL is valid */
export function isValidURL(str: string): boolean {
var pattern = new RegExp(
'^(https?:\/\/)?' + // protocol
'((([a-z\d]([a-z\d-]*[a-z\d])*)\.)+[a-z]{2,}|' + // domain name
'((\d{1,3}\.){3}\d{1,3}))' + // OR ip (v4) address
'(\:\d+)?(\/[-a-z\d%_.~+]*)*' + // port and path
'(\?[;&a-z\d%_.~+=-]*)?' + // query string
'(\#[-a-z\d_]*)?$',
'i'
); // fragment locator
return !!pattern.test(str);
}

问题是当我使用用户名和密码时,它会破裂。

http://admin: admin@192.168.92.106:5500/api/v1/

是否有一种解决方案,如果在URL中包含用户名和密码,则将URL传递为有效?

你只需要在你的"协议"之后为user/pass模式添加一个新行。模式。对用户名和密码有什么要求?

一个简单的看起来像这样(假设用户名只有字母&数字):

(w+?:.+@)?

在@ejkeep的帮助下的答案

/** Checks if a URL is valid */
export function isValidURL(str: string): boolean {
var pattern = new RegExp(
'^(https?:\/\/)?' + // protocol
'(\w+?:.+@)?' + // username and password
'((([a-z\d]([a-z\d-]*[a-z\d])*)\.)+[a-z]{2,}|' + // domain name
'((\d{1,3}\.){3}\d{1,3}))' + // OR ip (v4) address
'(\:\d+)?(\/[-a-z\d%_.~+]*)*' + // port and path
'(\?[;&a-z\d%_.~+=-]*)?' + // query string
'(\#[-a-z\d_]*)?$',
'i'
); // fragment locator
return !!pattern.test(str);
}

最新更新