Ответ 1
Если у вас действительно есть действительные URL-адреса, это будет работать:
var urls = [
'http://domain.com:3000',
'http://domain.com?pass=gas',
'http://domain.com/',
'http://domain.com'
];
for (x in urls) {
var a = document.createElement('a');
a.href = urls[x];
console.log(a.hostname);
}
//=> domain.com
//=> domain.com
//=> domain.com
//=> domain.com
Примечание. Использование регулярного выражения для такого рода вещей глупо, когда язык, который вы используете, имеет другие встроенные методы.
Другие свойства доступны в A
элементах.
var a = document.createElement('a');
a.href = "http://domain.com:3000/path/to/something?query=string#fragment"
a.protocol //=> http:
a.hostname //=> domain.com
a.port //=> 3000
a.pathname //=> /path/to/something
a.search //=> ?query=string
a.hash //=> #fragment
a.host //=> domain.com:3000
EDIT # 2
При дальнейшем рассмотрении я просмотрел документы Node.js и нашел этот маленький драгоценный камень: url#parse
Приведенный выше код можно переписать как:
var url = require('url');
var urls = [
'http://domain.com:3000',
'http://domain.com?pass=gas',
'http://domain.com/',
'http://domain.com'
];
for (x in urls) {
console.log(url.parse(urls[x]).hostname);
}
//=> domain.com
//=> domain.com
//=> domain.com
//=> domain.com
EDIT # 1
См. историю изменений этого сообщения, если вы хотите увидеть, как решить эту проблему, используя jsdom
и nodejs