Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> RegExp находит лишнее 
:(
    Опции темы
Onis
Дата 26.5.2011, 14:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 241
Регистрация: 18.6.2005
Где: Украина, Николаев

Репутация: 2
Всего: 3



Здравстрвуй винград.

Код который должен находить все слова начинающиеся с http:// перед и в конце которых должен находится или пробел или конец/начало/перевод строки.
JS:
Код

var text = document.getElementById('content').innerHTML;
var str = 'http://\\S*';
var n = new RegExp('(?:\\n|\\s|^)' + str + '(?=\\n|\\s|$)', 'ig');
console.log(text.match(n))

HTML:
Код

<div id="content">test test test
 http://google.com  test test test http://ya.ru
 'http://test.ru'</div>

log:
Код

[" http://google.com", " http://ya.ru"]

Работает идеально. Но почему он запоминает пробел перед словом?
PM MAIL   Вверх
Stolzen
Дата 26.5.2011, 15:15 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1041
Регистрация: 17.10.2005

Репутация: 4
Всего: 48



Насколько я помню, в js в регулярных выражениях нет заглядывания назад (или я неправ?) - поэтому и цепляется строка с пробелом.

Можно предположить, что если адрес заканчивается на кавычку, то скорее всего, он на нее и начинается, и можно сделать вот такое re:

Код

new RegExp('http://[-A-Za-z0-9.]+(?=(\\s+)|$)', 'ig');


Хотя, думаю, лучше использовать trim. 

Это сообщение отредактировал(а) Stolzen - 26.5.2011, 15:19


--------------------
datatalks.ru - анализ данных, статистика, машинное обучение
PM MAIL WWW   Вверх
Котокобра
Дата 27.5.2011, 00:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 147
Регистрация: 26.11.2009

Репутация: нет
Всего: 4



так вроде покороче будет

Код

var s = 'test test test\n http://google.com  test test test http://ya.ru\n \'http://test.ru\'';

alert(
    s.match(/http:\/\/[^\s]*/gi)
);

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0784 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.