Вместо того, чтобы использовать регулярное выражение, я бы рекомендовал использовать элемент привязки.
, когда вы устанавливаете свойство href
для anchor
, устанавливаются различные другие свойства.
var parser = document.createElement('a');
parser.href = "http://example.com:3000/pathname/?search=test#hash";
parser.protocol; // => "http:"
parser.hostname; // => "example.com"
parser.port; // => "3000"
parser.pathname; // => "/pathname/"
parser.search; // => "?search=test"
parser.hash; // => "#hash"
parser.host; // => "example.com:3000"
source
Однако, если значение, к которому привязано значение href
, не является допустимым URL-адресом, тогда значение этихвспомогательные свойства будут пустой строкой.
Редактировать: , как указано в комментариях: если используется неверный URL, свойства текущего URL могут быть заменены.
Итак, пока вы не передаете URL текущей страницы, вы можете сделать что-то вроде:
function isValidURL(str) {
var a = document.createElement('a');
a.href = str;
return (a.host && a.host != window.location.host);
}