A simple solution for what you want is the following:
var prefix = 'http://';
if (s.substr(0, prefix.length) !== prefix)
{
s = prefix + s;
}
However there are a few things you should be aware of…
The test here is case-sensitive. This means that if the string is initially Http://example.com
this will change it to http://Http://example.com
which is probably not what you want. You probably should also not modify any string starting with foo://
otherwise you could end up with something like http://https://example.com
.
On the other hand if you receive an input such as example.com?redirect=http://othersite.com
then you probably do want to prepend http://
so just searching for ://
might not be good enough for a general solution.
Alternative approaches
- Using a regular expression:
if (!s.match(/^[a-zA-Z]+:\/\//)) { s = 'http://' + s; }
- Using a URI parsing library such as JS-URI.
if (new URI(s).scheme === null) { s = 'http://' + s; }