javascript - 替换双 http ://or https://

标签 javascript

我有一个预值为“http://”的文本框。

有时人们粘贴了整个链接而忘记删除预设值,得到的是 http://http://

我想出了如何替换它。

但是,我正在尝试编写以这种方式转换的内容: http://http:// -> http://http://https:// -> https://

我写了那个,对于 https:// 它给出了一个错误。对于 http:// 根本没有任何反应。

我做错了什么?

function replacehttp() {

    var iurl = document.getElementById('url').value;

    if (iurl.substring(0, 15) == 'http://https://') {

        var surl = iurl.replace('http://https://', 'https://').
        document.getElementById('url').value = surl;
        generate();

    } else if (iurl.substring(0, 14) == 'http://https://') {
        var ourl = iurl.replace('http://http://', 'http://');
        document.getElementById('url').value = ourl;
        generate();
    }
}

PS:generate() 是我想在这两种情况下调用的另一个函数

最佳答案

我会使用正则表达式来做到这一点:

iurl = iurl.replace(/^http:\/\/(https?:\/\/)/, "$1");

如果你不熟悉正则表达式,你可以用谷歌搜索它,但简单地说:

/.../之间的表达式是正则表达式字面量。

^ 匹配字符串的开头

/ 必须使用 \/ 进行转义,所以表达式实际上是 ^http://(https?://)

? 表示前面的字符(即 s)是可选的。

() 用于捕获匹配的值(即 http://https://)。

$1 是一个特殊的值,意思是:替换为第一个捕获的组。

关于javascript - 替换双 http ://or https://,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18333793/

相关文章:

javascript - 如何多次使用 jQuery Slidetoggle?

Javascript:测试在正则表达式字符串中找到单个字符

Javascript - 更改二维数组的名称

javascript - Knockout.js 验证文本框突出显示

javascript - JavaScript 中变量的大小

javascript - 动画与IE文字阴影冲突

javascript - JS 循环变量作用域

javascript - 如何限制 BoxPlot Y 轴上 HighCharts PlotLine 的长度?

javascript - V8 如何使用 requestAnimationFrame 重构异步堆栈跟踪?

javascript - 简单地管道到响应对象如何将数据呈现给客户端?