如何用String.prototype.startsWith判断链接是否以特定协议开头?

2026-04-27 17:120阅读0评论SEO问题
  • 内容介绍
  • 相关推荐

本文共计889个文字,预计阅读时间需要4分钟。

如何用String.prototype.startsWith判断链接是否以特定协议开头?

直接使用 `String.prototype.startsWith` 检查链接,但有时返回 `false`。这通常是因为字符串开头有空格、换行或不可见的 Unicode 字符(如零宽空格 `u200b`)。`startsWith` 是严格匹配,不自动去除前导空格或处理特殊字符。

实操建议:

  • 先用 .trim() 清除首尾空白:url.trim().startsWith('https://')
  • 若需兼容带 BOM 的字符串(如 UTF-8 BOM \ufeff),可加 .replace(/^\ufeff/, '')
  • 避免用正则替代——除非需要更复杂的协议变体(如大小写不敏感),否则纯前缀判断用 startsWith 更快、更直观

区分 http 和 https 时要注意大小写和斜杠

startsWith 默认区分大小写,而协议名在 URL 中按规范应为小写,但实际输入可能混入大写(如 HTTP://Https://)。另外,'http:''http://' 完全不同——前者匹配 http:foo 这类非法 URL,后者才匹配标准协议+双斜杠结构。

阅读全文

本文共计889个文字,预计阅读时间需要4分钟。

如何用String.prototype.startsWith判断链接是否以特定协议开头?

直接使用 `String.prototype.startsWith` 检查链接,但有时返回 `false`。这通常是因为字符串开头有空格、换行或不可见的 Unicode 字符(如零宽空格 `u200b`)。`startsWith` 是严格匹配,不自动去除前导空格或处理特殊字符。

实操建议:

  • 先用 .trim() 清除首尾空白:url.trim().startsWith('https://')
  • 若需兼容带 BOM 的字符串(如 UTF-8 BOM \ufeff),可加 .replace(/^\ufeff/, '')
  • 避免用正则替代——除非需要更复杂的协议变体(如大小写不敏感),否则纯前缀判断用 startsWith 更快、更直观

区分 http 和 https 时要注意大小写和斜杠

startsWith 默认区分大小写,而协议名在 URL 中按规范应为小写,但实际输入可能混入大写(如 HTTP://Https://)。另外,'http:''http://' 完全不同——前者匹配 http:foo 这类非法 URL,后者才匹配标准协议+双斜杠结构。

阅读全文