使用 Javascript 检查字符串是否以 http 开头

2024-01-11

我一直在寻找这个问题的答案,但我找到的所有答案都不是在 JavaScript 中。

我需要一种在 javascript 中检查字符串是否以 http、https 或 ftp 开头的方法。如果它不是以其中之一开头,我需要在字符串前面加上http://。 indexOf 对我不起作用我认为我不需要 http、https 或 ftp。我也不想要类似的东西google.com/?q=http://google.com触发它是有效的,因为它不以 http 开头,而 indexOf 会触发它是正确的(如果我没有完全弄错的话)。

我发现的最接近的 PHP 正则表达式是这样的:

function addhttp($url) {
   if (!preg_match("~^(?:f|ht)tps?://~i", $url)) {
      $url = "http://" . $url;
   }
   return $url;
}

来源:如果 url 中不存在 http,如何添加 http https://stackoverflow.com/questions/2762061/how-to-add-http-if-its-not-exists-in-the-url

我只是不知道如何将其转换为 JavaScript。任何帮助将不胜感激。


export const getValidUrl = (url = "") => {
    let newUrl = window.decodeURIComponent(url);
    newUrl = newUrl.trim().replace(/\s/g, "");

    if(/^(:\/\/)/.test(newUrl)){
        return `http${newUrl}`;
    }
    if(!/^(f|ht)tps?:\/\//i.test(newUrl)){
        return `http://${newUrl}`;
    }

    return newUrl;
};

Tests:

expect(getValidUrl('https://www.test.com')).toBe('https://www.test.com');
expect(getValidUrl('http://www.test.com')).toBe('http://www.test.com');
expect(getValidUrl('    http   :    /  /  www.test.com')).toBe('http://www.test.com');
expect(getValidUrl('ftp://www.test.com')).toBe('ftp://www.test.com');
expect(getValidUrl('www.test.com')).toBe('http://www.test.com');
expect(getValidUrl('://www.test.com')).toBe('http://www.test.com');
expect(getValidUrl('http%3A%2F%2Fwww.test.com')).toBe('http://www.test.com');
expect(getValidUrl('www    .  test.com')).toBe('http://www.test.com');
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Javascript 检查字符串是否以 http 开头 的相关文章

  • socket.io 的良好初学者教程? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • JavaScript 中的埃拉托斯特尼筛法对大量数据无限运行

    我一直在尝试写埃拉托斯特尼筛法 http en wikipedia org wiki Sieve of EratosthenesJavaScript 中的算法 基本上我只是按照以下步骤操作 创建从 2 到 n 1 的连续整数列表 令第一个素
  • 以编程方式填写reactjs表单

    我正在编写一个用户脚本 但无法填写由reactjs制作的表单 我的代码 document querySelector id username value email protected cdn cgi l email protection
  • 图像无法在带有 DOM 的 IE 中加载:控制台中的 7009 错误(无法解码)

    当在 IE 中的单个页面上加载许多图像时 在 IE11 中重现 其中一些图像开始加载失败 并在控制台中出现类似以下警告的内容 DOM7009 无法解码 URL 处的图像 某些唯一的 url 当我查看网络流量时 似乎确实从服务器收到了每个图像
  • 带有淘汰赛js的隐形recaptcha

    我正在完成隐形验证码 但我在实现它时遇到问题 谷歌开发人员页面中的代码显示它应该是这样的
  • 可以在初始 DOM 解析期间/之前修改 DOM 吗?

    是否可以在初始 DOM 解析期间或之前修改 DOM 或者我是否必须等到 DOM 被解析和构建之后才能与其交互 更具体地说 是否有可能阻止 DOM 中的脚本元素使用用户脚本 内容脚本或 Chrome 或 Firefox 中的类似脚本运行 在解
  • 使用 dc.js 按条形值对条形图中的条形进行排序(排序)

    如何通过维度的计算值而不是维度本身的名称对 dc js 示例中的 x 轴 维度 进行排序 例如 请考虑序数条形图的 dc js 示例 https github com dc js dc js blob master web examples
  • Bootstrap按钮加载+Ajax

    我正在使用 Twitter Bootstrap 的按钮加载状态 http twitter github com bootstrap javascript html buttons http twitter github com bootst
  • 如何纠正流警告:解构(缺少注释)

    我正在编写一个小型 React Native 应用程序 并且正在尝试使用 Flow 但我无法在任何地方真正获得有关它的正确教程 我不断收到错误 destructuring Missing annotation 有关 station 这段代码
  • 将 GMT 时间转换为当地时间

    我以这种格式从我的服务器获取 GMT 时间 Fri 18 Oct 2013 11 38 23 GMT 我的要求是使用Javascript将此时间转换为本地时间 例如 如果用户来自印度 首先我需要采用时区 5 30并将其添加到我的服务器时间并
  • 调整图像大小并将画布旋转 90 度

    这里有很多关于在 js 上使用画布旋转图像的主题 我阅读了其中的大部分内容 但无法找到解决我的问题的方法 我正在接收任何分辨率的图像 来自上传组件 我将其大小调整为 1024x768 如下所示 var canvas document cre
  • 检查 jQuery 1.7 中是否存在基于文本的选择选项

    所以我有以下 HTML 片段
  • window.location 和 location.href 之间的区别

    我对之间的区别感到困惑window location and location href 两者似乎都以相同的方式行事 有什么不同 window location是一个对象 它保存有关当前文档位置的所有信息 主机 href 端口 协议等 lo
  • DataTables row.add 到特定索引

    我正在替换这样的行项目 var targetRow entity row dataTable targetRow closest table dataTable DataTable dataTable row targetRow remov
  • Firebase 函数 onWrite 未被调用

    我正在尝试使用 Firebase 函数实现一个触发器 该触发器会复制数据库中的一些数据 我想观看所有添加的内容votes user vote 结构为 我尝试的代码是 const functions require firebase func
  • 日期出现奇怪的错误,“未捕获非法访问”

    所以我试图找到最新的DateJavascript 可以处理 我把它减少到 9 月 275760 并增加了我开始捕获未捕获的天数illegal access例外new Date 09 24 275760 to new Date 10 13 2
  • Vue 和 Vuex:处理依赖的计算属性

    我的应用程序是一个使用 Vuex 在 Vue 中构建的精简电子表格 关键组件是TableCollection Table and Row The TableCollection有一个包含多个的数组Table对象 每个Table有一个包含多个
  • 用于交互式图形绘制的轻量级 JavaScript 库? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我有兴趣了解用于绘制交互式图表的最轻量级 javascript 库 我掌握的数据主要是与海洋研究相关的科学数据 我知道一些 jquery
  • 在 CKEditor 中设置字体大小和字体系列

    我正在使用 ckeditor 我想问一下这个插件如何设置font family和font size 我尝试过使用 CKEDITOR config font defaultLabel Arial CKEDITOR config fontSiz
  • 使用 MongoDB 和 Nodejs 插入和查询日期

    我需要一些帮助在 mongodb 和 nodejs 中按日期查找记录 我将日期添加到抓取脚本中的 json 对象 如下所示 jsonObj last updated new Date 该对象被插入到 mongodb 中 我可以看到如下 la

随机推荐

  • Kotlin 用子类型覆盖 fun

    我在继承包含基类型的方法 乐趣的接口时遇到问题 我想将其重写为实现它的类中的子类型 到目前为止我已经有了界面 interface IModel fun convert dataModel BaseDataModel 以及实现它的类 clas
  • 如何使用命令行编译WPF程序?

    我需要使用命令行 C 编译器 即csc exe 问题是错误CS0103 编译器说没有InitializeComponent 我的程序中的方法 但这是错误的 因为我添加了 System Xaml dll 有人知道如何解决这个问题吗 使用 MS
  • Rails Engine - Gems 依赖项,如何将它们加载到应用程序中?

    我在这里做一个引擎 它独立工作正常 当我将其转换为 gem 并将其加载到另一个应用程序中时 我收到许多未定义的错误 这些错误来自我的引擎 gem 的依赖项 这是宝石规格 s add dependency paperclip s add de
  • 如何在引导程序中将图像放在图像上;

    我需要将一个图像放在另一个图像上 这是我的代码
  • 找不到方法compile()

    我想在 android studio 中添加一个 lib 但它不起作用 这是一个屏幕截图 我还尝试在 gradle build 中添加依赖项 但这也不起作用 也许是因为我在代理后面 You 使用错误 build gradle file 你不
  • 基于 OWIN 在 MVC 5 中为多个 Web 应用程序设置表单身份验证

    我正在设置我的第一个 MVC Web 应用程序 我知道我需要提供基于表单的身份验证模型 并且我也知道我也会将其重用于多个其他内部 Web 应用程序 我相信 MVC 5 身份验证的所有文档都基于 OWIN 内容 并且使用 EF Code Fi
  • 如何更改 Windows 服务的名称?

    我有一个用 C 开发的 Windows 服务应用程序 相同的服务需要使用不同的配置文件来运行 要在同一台计算机上运行这些服务 我需要更改服务的名称 我可以创建解决方案的多个副本 但不确定如何更改服务的名称 Thanks 在您的 win 服务
  • 在 Powershell 中创建表

    伙计们 我有一个查询远程计算机中的服务的脚本 它运行 2 个嵌套的 foreach 循环 其中 1 个用于计算机列表 内部一个用于服务列表 我想在二维数组中捕获该过程的输出 The desired output should be like
  • Node.js 猫鼬性能

    有人有使用 mongoose js 作为大规模 Mongodb 的 Node js 映射器的经验吗 我想知道是否应该使用本机驱动程序 因此我将所有内容保持轻量级或编写一个简单的包装器 如果有人有任何提示 请建议 非常感谢 参加聚会有点晚了
  • 如何订购字母列表(“a”、“b”、“c”、...、“z”、“aa”、“ab”)?在这种情况下,String#succ 和 <=> 似乎不能很好地协同工作

    我的一个对象 item 有一个 ID letter id 格式为 a b aa ab 等 为了生成它 我使用 ruby 的String succ在这样的实例方法中 def set letter id last parent items al
  • 日期之间的天数(不包括周末和节假日)

    有没有办法在不创建新表或视图的情况下计算 PostgreSQL 中两个日期之间的天数 不包括周末和特定假期 我只有数据库的读取权限 因此无法创建 假日 表或视图 我正在考虑使用generate series函数 但假期并不遵循特定的模式 因
  • Junit 5 和 IntelliJ“未找到测试”

    问答式问题 因为现有问题与我在此处所做的简单拼写错误不符 Goal 使用 UI 通过 IntelliJ IDE 执行简单的 JUnit 测试 右键单击 运行测试 Problem IntelliJ 表示 未找到测试 Code import o
  • Pygame 表面的 alpha 不影响透明度

    当鼠标未悬停在游戏中时 我试图使用户界面事物变得透明 但由于某种原因 当我设置图像的 alpha 值使其变得透明时 什么也没有发生 这是一些可复制该问题的可运行代码 import pygame WHITE 255 255 255 class
  • 在 R studio 中逐行调试

    有没有办法在R studio环境中逐行调试代码 我知道有断点 下一步 继续等来调试 但我正在寻找像 Visual Studio 中的那样的逐行调试选项 谢谢 对于像我这样习惯了其他 IDE 的 R Studio 新手 a 通过单击边框或按S
  • Pandas:选择每组中的前几行

    我无法解决这个简单的问题 我在这里寻求帮助 我的 DataFrame 如下 我想选择每组 a 中的前两行 df pd DataFrame a pd Series NewYork NewYork NewYork Washington Wash
  • now.js - Hello World 示例 - “要求未定义”

    我无法获取now js 聊天客户端教程 http nowjs com examples hw上班 我也关注过这个视频 http vimeo com 20936525 at 0几乎一模一样 服务器 咖啡 fs require fs http
  • IIS 将哪个版本的 .NET Framework 用于我的 AppPool?

    我的计算机和 IIS 应用程序池上安装了 Net Framework 4 5 我将 NET CLR 版本设置为 4 0 我的问题是 在此 IIS 站点中运行 NET 代码时 它使用的是哪个框架版本 4 0 还是 4 5 请参阅下面的屏幕截图
  • 无法删除 Google Play 发布错误。如何告诉 Google Play 我的应用不适合 COVID 追踪?

    我正在尝试创建新应用程序的内部测试版本 但在版本审核页面上 显示有 1 个错误 当我扩展该错误时 它说 错误 您必须让我们知道您的应用程序是 COVID 19 接触者追踪应用程序还是状态应用程序 没有说明如何说明我的应用程序与新冠病毒无关
  • MySQL“wait_timeout”不支持长查询?

    我正在尝试测试wait timeoutMySQL 设置似乎被忽略了 PHP 脚本
  • 使用 Javascript 检查字符串是否以 http 开头

    我一直在寻找这个问题的答案 但我找到的所有答案都不是在 JavaScript 中 我需要一种在 javascript 中检查字符串是否以 http https 或 ftp 开头的方法 如果它不是以其中之一开头 我需要在字符串前面加上http