Javascript 替换双http://或https://
我有一个前置值为“http://”的文本框 有时人们粘贴整个链接,忘记删除预设值,得到一个Javascript 替换双http://或https://,javascript,Javascript,我有一个前置值为“http://”的文本框 有时人们粘贴整个链接,忘记删除预设值,得到一个http://http:// 我找到了替换它的方法 然而,我试图写一些这样转换的东西: http://http://->http://和 http://https://->https:// 我写了这个,对于https://它给出了一个错误。对于http://来说,什么都不会发生 我做错了什么 function replacehttp() { var iurl = document.getEleme
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()是我想在两种情况下调用的另一个函数您的代码显然是错误的-应该是:
} else if (iurl.substring(0, 14) == 'http://http://') {
// ^ not https
一个更简单的选择:
function replacehttp() {
var iurl = document.getElementById('url').value;
iurl = iurl.replace(/^http:\/\/(https?:\/\/)/, '$1');
document.getElementById('url').value = iurl ;
generate();
}
您的代码显然是错误的-应该是:
} else if (iurl.substring(0, 14) == 'http://http://') {
// ^ not https
一个更简单的选择:
function replacehttp() {
var iurl = document.getElementById('url').value;
iurl = iurl.replace(/^http:\/\/(https?:\/\/)/, '$1');
document.getElementById('url').value = iurl ;
generate();
}
我将使用正则表达式来实现这一点:
iurl = iurl.replace(/^http:\/\/(https?:\/\/)/, "$1");
如果您不熟悉regex,您可以用谷歌搜索它,但简单地说:
/…之间的表达式/
是一个正则表达式文本
^
匹配字符串的开头
/
必须用\/
转义,因此表达式实际上是^http://(https?://)
?
表示前面的字符(即s
)是可选的
()
用于捕获匹配的值(即http://
或https://
)
$1
是一个特殊的值,意思是:替换为第一个捕获的组。我将使用正则表达式来实现这一点:
iurl = iurl.replace(/^http:\/\/(https?:\/\/)/, "$1");
如果您不熟悉regex,您可以用谷歌搜索它,但简单地说:
/…之间的表达式/
是一个正则表达式文本
^
匹配字符串的开头
/
必须用\/
转义,因此表达式实际上是^http://(https?://)
?
表示前面的字符(即s
)是可选的
()
用于捕获匹配的值(即http://
或https://
)
$1
是一个特殊值,意思是:替换为第一个捕获的组。您的函数有一些错误,请使用以下命令:
函数replacehttp(){
有了这个:
在这一行之后
var surl=iurl.replace('http://https://“,”https://“)。
有
而不是这个;
您的函数有一些错误,请使用以下命令:
函数replacehttp(){
有了这个:
在这一行之后
var surl=iurl.replace('http://https://“,”https://').
这里有
而不是这个;
如果缺少/需要,不包括预填充的http://
并添加它会更容易吗?为什么不删除占位符,或者使用属性占位符
让浏览器自动为您执行此操作。您应该使用占位符属性并添加t他http://
只有在缺少时才使用:
我知道我可以使用占位符
,但在这种情况下,我需要使用值
。我的文本框有一个http://
值。假设有人粘贴了一个链接,它得到了http://http://www.google.pt
。我想将其转换为http://www.google.pt
.https://links@user2699627:再次使用“需要”。你不需要“需要”做任何事情,你可以自由地做任何你想做的事情。什么可能会导致这样的要求?根据定义,这是占位符的工作,而不是值。value=
应设置为默认值,即如果用户传递输入,将提交at。如果缺少/需要,是否更容易不包括预填充的http://
并添加它?为什么不删除占位符,或使用属性占位符
让浏览器自动为您执行此操作。您应该使用占位符属性并添加http://
仅当缺少时:
我知道我可以使用占位符
,但在这种情况下,我需要使用值
。我的文本框有一个http://
值。假设有人粘贴了一个链接,它得到了http://http://www.google.pt
。我想将其转换为http://www.google.pt
。相同的thttp://links@user2699627:再次使用“需要”。你不“需要”做任何事情,你可以自由地做任何你想做的事情。什么可能会导致这样的要求?根据定义,这是占位符的工作,而不是值。value=
应该设置为默认值,即su如果用户传递输入,则提交。错过了您的答案,并写了完全相同的内容。+1表示更快。:)
。我还需要添加/I
标志,以防万一。是的,这对我很有帮助。谢谢您如此多地修改了您的答案并写了完全相同的内容。+1表示更快。)。我还需要添加/I
标志,以防万一。是的,这对我很有帮助。非常感谢你,谢谢你,@kobi。复制代码是我的错(我保存的代码没有那个错误的https)@user2699627-然后你需要发布你的实际代码,否则很难帮助你:)
谢谢@Kobi,这对我很有帮助。你错过了一个/
,但我发现了。尊敬的!谢谢,@Kobi。复制代码是我的错(我保存的代码没有那个错误的https)@user2699627-然后你需要发布你的实际代码,否则很难帮助你:)
谢谢@Kobi,这对我很有帮助。你错过了一个/
,但我发现了。问候!