Простое решение для того, что вы хотите, это следующее:
var prefix = 'http://';
if (s.substr(0, prefix.length) !== prefix)
{
s = prefix + s;
}
Однако есть несколько вещей, о которых вы должны знать ...
Тест здесь чувствителен к регистру. Это означает, что если строка изначально Http://example.com
, это изменит ее на http://Http://example.com
, что, вероятно, не то, что вы хотите. Вы, вероятно, также не должны изменять любую строку, начинающуюся с foo://
, иначе вы можете получить что-то вроде http://https://example.com
.
С другой стороны, если вы получаете ввод, такой как example.com?redirect=http://othersite.com
, то вы, вероятно, действительно хотите добавить http://
, поэтому простой поиск ://
может оказаться недостаточно для общего решения.
Альтернативные подходы
Использование регулярного выражения:
if (!s.match(/^[a-zA-Z]+:\/\//))
{
s = 'http://' + s;
}
Использование библиотеки анализа URI, такой как JS-URI .
if (new URI(s).scheme === null)
{
s = 'http://' + s;
}
Смежные вопросы