Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 15.03.2012, 00:05
Интересующийся
Отправить личное сообщение для asmend Посмотреть профиль Найти все сообщения от asmend
 
Регистрация: 14.03.2012
Сообщений: 14

Сообщение от devote
ну тогда тебе смело могу сказать что в регах нет возможности проверять отрицания.
как нет? По книжкам где читал все так и пишется (?!слово которого не должно быть), но почему-то не работает
Ответить с цитированием
  #12 (permalink)  
Старый 15.03.2012, 00:14
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Сообщение от asmend
как нет? По книжкам где читал все так и пишется (?!слово которого не должно быть), но почему-то не работает
не слово а символ... парсер регов перебирает посимвольно, тоесть не находит символ если идет....
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #13 (permalink)  
Старый 15.03.2012, 01:20
Интересующийся
Отправить личное сообщение для asmend Посмотреть профиль Найти все сообщения от asmend
 
Регистрация: 14.03.2012
Сообщений: 14

Как раз слово, символ пишется так [^a]
Ответить с цитированием
  #14 (permalink)  
Старый 15.03.2012, 01:47
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Сообщение от asmend
Как раз слово, символ пишется так [^a]
Ты так и не понял, может все же нормально почитаем доку про работу с RegExp

возьмем пример найти test если за буквой t не идет 25
var re = /test(?!25)/;
alert( re.exec( "test25" ) ); // результат null не найдено

найти слово tes с любым окончанием, но не находить если следует 25:
var re = /tes.?(?!25)/;
alert( re.exec( "test25" ) ); // результат tes, тоесть всеравно выдал, хотя мы дали понять что не должно быть.


Вывод из всего этого, то что он проверяет не целое слово а лишь последний символ перед указанным правилом.
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine

Последний раз редактировалось devote, 15.03.2012 в 03:02. Причина: Добавил точку
Ответить с цитированием
  #15 (permalink)  
Старый 15.03.2012, 02:26
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Сообщение от Maxmaxmахimus Посмотреть сообщение
devote,
зачем во втором примере вопросительный знак после t?
Указывает на то что может быть любой символ.
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #16 (permalink)  
Старый 15.03.2012, 02:50
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Сообщение от Maxmaxmахimus
он указывает что буква s может быть, а может и не быть.
ну да верно, точку перед ним не поставил... но сути пример от этого не теряет.
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #17 (permalink)  
Старый 15.03.2012, 09:16
Лаборант :-)
Отправить личное сообщение для Pavel M. Посмотреть профиль Найти все сообщения от Pavel M.
 
Регистрация: 08.11.2011
Сообщений: 806

Сообщение от asmend Посмотреть сообщение
Нужно что бы этот пример заработал как и должен. Если в строке перед "56" нет "34", то возвращал true. Если в строке перед "56" есть "34" то false. Я не понимаю почему это не работает

var str='0123456789';
var re=/(?!34)56/;
if (re.test(str))
alert('Yes');
else
alert('No');
попробуйте так

var str='0123456789';
var re=/(?!34)..56/;
if (re.test(str))
  alert('Yes'); // перед 56 нет 34
else
  alert('No');  // перед 56 есть 34


str='0123356789';
if (re.test(str))
  alert('Yes'); // перед 56 нет 34
else
  alert('No');  // перед 56 есть 34
Ответить с цитированием
  #18 (permalink)  
Старый 15.03.2012, 16:50
Интересующийся
Отправить личное сообщение для asmend Посмотреть профиль Найти все сообщения от asmend
 
Регистрация: 14.03.2012
Сообщений: 14

Сообщение от Pavel M. Посмотреть сообщение
попробуйте так

var str='0123456789';
var re=/(?!34)..56/;
if (re.test(str))
  alert('Yes'); // перед 56 нет 34
else
  alert('No');  // перед 56 есть 34


str='0123356789';
if (re.test(str))
  alert('Yes'); // перед 56 нет 34
else
  alert('No');  // перед 56 есть 34
так вроде работает, а что значат две точки?
Ответить с цитированием
  #19 (permalink)  
Старый 15.03.2012, 19:15
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,123

Сообщение от Maxmaxmахimus
точка это любой непробельный символ
???
Ответить с цитированием
  #20 (permalink)  
Старый 15.03.2012, 20:06
Лаборант :-)
Отправить личное сообщение для Pavel M. Посмотреть профиль Найти все сообщения от Pavel M.
 
Регистрация: 08.11.2011
Сообщений: 806

Сообщение от asmend
так вроде работает, а что значат две точки?
точек нужно столько, на сколько символов мы заглядываем вперед
в (?!34) два символа - значит две точки
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
onResize() для DIV-a faiwer Общие вопросы Javascript 6 26.06.2012 15:27
regexp не работает экранирование точки Spice Общие вопросы Javascript 2 10.11.2011 13:41
Не работает код внутри циклов DZHETIGAPA Events/DOM/Window 1 21.06.2011 01:03
Динамическая HTML форма (FireFox - работает, IE - не работает) dm1tr1y Общие вопросы Javascript 10 11.12.2009 15:59
Скрипт меню-гармошки работает выборочно Extern Элементы интерфейса 2 23.02.2009 15:32