【发布时间】:2021-06-30 09:06:35
【问题描述】:
大多数 URL 的 RegEx 示例还包括我不需要匹配的目录。
鉴于以下 urls,您能否确认我的 Current RegEx 是准确的?可以简化吗?
显式 TLS - (iCloud)
smtp://smtp.mail.me.com:587
隐式 TLS - (Gmail)
smtps://smtp.gmail.com:465
interface UrlParts {
url: string,
protocol: string,
domain: string,
port: number
}
// 1. url check
function urlValidate(url : any): UrlParts | null {
// Convert to string and lowercase PRIOR to regex match.
url = url.toString().toLowerCase();
// REGEX Pattern to validate url.
const urlRegexPattern = /(smtps?):\/\/([\d.a-z-]+\.[a-z]{2,63}):(\d{1,5})/;
const match = url?.match(urlRegexPattern)
// Perform match
if(match) {
return {
url: match[0],
protocol: match[1],
domain: match[2],
port: parseInt(match[3])
}
} else {
return null;
}
}
用法:
urlValidate('smtp://smtp.mail.me.com:587');
{
url: "smtp://smtp.mail.me.com:587",
protocol: "smtp",
domain: "smtp.mail.me.com",
port: 587
}
urlValidate('smtps://smtp.gmail.com:465');
{
url: "smtps://smtp.gmail.com:465",
protocol: "smtps",
domain: "smtp.gmail.com:465",
port: 465
}
【问题讨论】:
标签: javascript regex typescript email smtp