Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 13.03.2013, 15:29
Аватар для Magneto
Люмус, Емаксос Developer!
Отправить личное сообщение для Magneto Посмотреть профиль Найти все сообщения от Magneto
 
Регистрация: 06.05.2010
Сообщений: 677

Регулярка определения главной страницы
Нужно регулярное выражение которое определит главную страницу сайта. При этом интересуют только те главные страницы которые оканчиваются на '/', тоесть:
Код:
http://habrahabr.ru/
https://www.google.com.ua/
http://mail.ru/
http://www.yandex.ua/
, а все другие нужно игнорировать, например:
Код:
http://habrahabr.ru/index.php
https://www.google.com.ua/start/
http://mail.ru/glavnaya.html
http://www.yandex.ua/#indexpage
Что имею сейчас:
var reg = /^https?:\/\/\S*?(\/)/;

Это регулярное выражение возвращает(находит) '/' во всех выше перечисленных сайтах, а нужно чтоб только в первых 4.
Я конечно пробовал указать '$' чтоб типа искало только когда '/' последний, но не работает.
Ответить с цитированием
  #2 (permalink)  
Старый 13.03.2013, 15:42
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

url = 'http://www.yandex.ua/#yandex'
tst = url.split(/:\/\/[^\/]*\//);
if(tst[1]=='')alert('Главная, без дополнений');
if(tst[1]!='')alert('>'+tst[1]+'<');
Ответить с цитированием
  #3 (permalink)  
Старый 13.03.2013, 15:53
Аватар для Magneto
Люмус, Емаксос Developer!
Отправить личное сообщение для Magneto Посмотреть профиль Найти все сообщения от Magneto
 
Регистрация: 06.05.2010
Сообщений: 677

Сообщение от Deff Посмотреть сообщение
url = 'http://www.yandex.ua/#yandex'
tst = url.split(/:\/\/[^\/]*\//);
if(tst[1]=='')alert('Главная, без дополнений');
if(tst[1]!='')alert('>'+tst[1]+'<');
Отлично, а теперь мне нужно одним регулярным выражением возвращать следующее:
Код:
http://google.com/webhp?....      ->  /webhp

http://google.com/search?...      ->  /search

http://google.com/#....           ->  /#

http://google.com/                ->  /

http://google.com/...             -> ничего
http://google.com/.../            -> ничего

и для прочих адресов ничего не возвращать
google.com для примера, может быть и другой домен

Последний раз редактировалось Magneto, 13.03.2013 в 15:58.
Ответить с цитированием
  #4 (permalink)  
Старый 13.03.2013, 15:57
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

url = 'http://www.yandex.ua/search?...'
tst = url.split(/:?[\/]+/);
var out=tst[2].split("?")[0];
if(out=='')out='/'
if(out!=tst[2]&&(out=='webhp'||out=='search'||out.indexOf('#')==0||out=='/')) {
alert('>'+out+'<');
}

Последний раз редактировалось Deff, 13.03.2013 в 16:13.
Ответить с цитированием
  #5 (permalink)  
Старый 13.03.2013, 16:17
Аватар для rgl
rgl rgl вне форума
Профессор
Отправить личное сообщение для rgl Посмотреть профиль Найти все сообщения от rgl
 
Регистрация: 28.02.2011
Сообщений: 349

Сообщение от Deff Посмотреть сообщение
url = 'http://www.yandex.ua/#yandex'
tst = url.split(/:\/\/[^\/]*\//);
if(tst[1]=='')alert('Главная, без дополнений');
if(tst[1]!='')alert('>'+tst[1]+'<');
Не везде работает.
Если главная, tst[1] может быть пустой строкой, а может вообще отсутствовать. А undefined не равно пустой строке.
Регулярное выражение: узнать количество цифр.

А зачем вообще split? Проще (и быстрее) просто проверить test-ом или search-ем, только в конец выражения добавть $
Ответить с цитированием
  #6 (permalink)  
Старый 13.03.2013, 16:19
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

url = 'http://www.yandex.ua/'
tst = url.split(/:\/\/[^\/]*\//);
if(tst[1]=='')alert('Главная, без дополнений');
if(tst[1]!='')alert('>'+tst[1]+'<');


url = 'http://www.yand'
tst = url.split(/:\/\/[^\/]*\//);
if(tst[1]=='')alert('Главная, без дополнений');
if(tst[1]!='')alert('>'+tst[1]+'<');
Ответить с цитированием
  #7 (permalink)  
Старый 13.03.2013, 16:21
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Сообщение от rgl
А зачем вообще split? Проще (и быстрее) просто проверить test-ом или search-ем, только в конец выражения добавть $
Ща всё сплитую, мотив весенний такой... потом матчевать буду
Ответить с цитированием
  #8 (permalink)  
Старый 13.03.2013, 19:38
Аватар для Magneto
Люмус, Емаксос Developer!
Отправить личное сообщение для Magneto Посмотреть профиль Найти все сообщения от Magneto
 
Регистрация: 06.05.2010
Сообщений: 677

Всем спасибо.

Вот регулярное выражение:
Код:
/^https?:\/\/[^\/]*(\/(?!.)|\/#(?=.*)|\/webhp(?=\?.*)|\/search(?=\?.*))/
которое соответствует всем требованиям:
Код:
http://google.com/webhp?....      ->  /webhp

http://google.com/search?...      ->  /search

http://google.com/#....           ->  /#

http://google.com/                ->  /

http://google.com/...             -> ничего
http://google.com/.../            -> ничего

и для прочих адресов ничего не возвращать
google.com для примера, может быть и другой домен
var
	result,
	pattern = /^https?:\/\/[^\/]*(\/(?!.)|\/#(?=.*)|\/webhp(?=\?.*)|\/search(?=\?.*))/;

result = 'http://google.com/webhp?....'.match( pattern );
alert( result && result[1] );

result = 'http://google.com/search?... '.match( pattern );
alert( result && result[1] );

result = 'http://google.com/#....'.match( pattern );
alert( result && result[1] );

result = 'http://google.com/'.match( pattern );
alert( result && result[1] );

result = 'http://google.com/...'.match( pattern );
alert( result && result[1] );

result = 'http://google.com/.../'.match( pattern );
alert( result && result[1] );

result = 'http://google.com'.match( pattern );
alert( result && result[1] );
Ответить с цитированием
  #9 (permalink)  
Старый 13.03.2013, 20:15
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,071

Magneto,
Вариант...
var	result,
	pattern = /^https?:\/\/[^/]*(\/([^/?.]+|$))/;

result = 'http://google.com/webhp?....'.match( pattern );
alert( result && result[1] );

result = 'http://google.com/search?... '.match( pattern );
alert( result && result[1] );

result = 'http://google.com/#....'.match( pattern );
alert( result && result[1] );

result = 'http://google.com/'.match( pattern );
alert( result && result[1] );

result = 'http://google.com/...'.match( pattern );
alert( result && result[1] );

result = 'http://google.com/.../'.match( pattern );
alert( result && result[1] );

result = 'http://google.com'.match( pattern );
alert( result && result[1] );
Ответить с цитированием
  #10 (permalink)  
Старый 13.03.2013, 20:18
Аватар для Magneto
Люмус, Емаксос Developer!
Отправить личное сообщение для Magneto Посмотреть профиль Найти все сообщения от Magneto
 
Регистрация: 06.05.2010
Сообщений: 677

Должна возвращать только webhp или search, на все другие варианты не должна реагировать.

var	result,
	pattern = /^https?:\/\/[^/]*(\/([^/?.]+|$))/;

result = 'http://google.com/aaa?....'.match( pattern );
alert( result && result[1] );
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Размер страницы jorik Общие вопросы Javascript 2 21.08.2012 15:54
условие определенной страницы jQuery makingpretty jQuery 0 22.06.2011 11:17
Загрузить элементы документа с другой страницы alexrussia Events/DOM/Window 10 25.03.2011 10:17
Вычисление высоты страницы. keysi_ Events/DOM/Window 2 03.08.2010 18:03
Как сделать фон, главной страницы на изображении ? asked86 (X)HTML/CSS 3 03.04.2009 02:54