我有以下代码:
<script>
document.write('<img src=//testURL.comaction?item=' + window.location.href + '>');
</script>
如果当前window.location(url)包含http或https,我想将其删除。
更新: 这两次投票有没有理由?我的问题很清楚
答案 0 :(得分:3)
仅删除http
/ https
:window.location.href.replace(/^http(s?)/i, "");
要删除http:
/ https:
:window.location.href.replace(/^http(s?):/i, "");
要删除http://
/ https://
:window.location.href.replace(/^http(s?):\/\//i, "");
这些都是不区分大小写的,只能从字符串的开头删除
答案 1 :(得分:2)
简单的正则表达式可以解决问题。
const removeHttps = input => input.replace(/^https?:\/\//, '');
const inputs = ['https://www.stackoverflow.com', 'http://www.stackoverflow.com'];
inputs.forEach(input => console.log('Input %s, Output %s', input, removeHttps(input)));
但是,更简洁的方法可能只是组合${document.location.host}${document.location.pathname}${document.location.search}
。它更长,但你不必做任何正则表达式。
host
类似于stackoverflow.com
pathname
类似于/questions
search
类似于?param=value
他们一起给出了没有协议的整个网址(顺便说一句是document.location.protocol
。)
答案 2 :(得分:1)
如果您只想替换http
或https
,则应使用window.location.href.replace(/http(s?)/, '');
作为Kieran E建议。如果您想要始终删除协议,可以使用window.location.href.replace(window.location.protocol, '');
。