我有一个预值为“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/