【问题标题】:RegEx for SMTP URL. Possible to Simplify?SMTP URL 的正则表达式。可以简化吗?
【发布时间】: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


    【解决方案1】:

    是的,正则表达式不考虑包含的目录。我仍然会为起始位置设置一个抑扬符。匹配 TLD 和域,可以细化子域。使用 RegEx 也可以使用 smtps://smtp.gmail.comxxxxxxxxxxxx。

    /^(smtps?):\/\/([\d.a-z-]+\.[a-z]{2,63}):(\d{1,5})/
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-06-23
      • 2017-07-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多