Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 29.05.2019, 17:18
Интересующийся
Отправить личное сообщение для MashaDo Посмотреть профиль Найти все сообщения от MashaDo
 
Регистрация: 29.05.2019
Сообщений: 10

прошу прощения)не верно исправила код)
заработало. Спасибо большое!
Ответить с цитированием
  #12 (permalink)  
Старый 29.05.2019, 17:22
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,714

Сообщение от рони Посмотреть сообщение
MashaDo,
regex = new RegExp('(^|\\s)' + original_escaped + '($|\\s)', 'gi');
А как насчёт «Маша! Маша, как дела?»? Или такое не надо заменять?

Вот изменённое определение \b (напоминаю для рони, что это синтаксический сахар для (?<=\W)(?=\w)|(?<=\w)(?=\W))

Так что правильный вариант такой:

MashaDo,

regex = new RegExp(`(?:^|(?<=\\W)(?=\\S))${original_escaped}(?:(?<=\\S)(?=\\W)|$)`, "gi");


или можно расширить кириллицей...
regex = new RegExp(`(?:^|(?<=[^a-zёа-я0-9_])(?=[a-zёа-я0-9_]))${original_escaped}(?:(?<=[a-zёа-я0-9_])(?=[^a-zёа-я0-9_])|$)`, "gi");


\b не работает с кириллицей, поскольку в его определении указано \w, а оно соответственно является синтаксическим сахаром только для [A-Za-z0-9_].

Последний раз редактировалось Malleys, 30.05.2019 в 15:40.
Ответить с цитированием
  #13 (permalink)  
Старый 29.05.2019, 17:32
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

MashaDo,
regex = new RegExp(`(^|\\s|[.,])${original_escaped}($|\\s|[.,])`, 'gi');
			if (v.match(regex)) {
				v = v.replace(regex, `$1${replacements[original]}$2`);
				matchFound = true;
			}
Ответить с цитированием
  #14 (permalink)  
Старый 29.05.2019, 17:42
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,714

рони, а чем не устроило моё решение, или почему такое ограниченное понимание границы слова?
Ответить с цитированием
  #15 (permalink)  
Старый 29.05.2019, 18:05
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Сообщение от Malleys
а чем не устроило моё решение,
1. не видел 2. не знаю этот сахар, не могу использовать, не уверен в поддержке метода
Сообщение от Malleys
почему такое ограниченное понимание границы слова?
если нужно можно добавить кавычки, двоеточие и прочие знаки [., сюда];
Ответить с цитированием
  #16 (permalink)  
Старый 29.05.2019, 18:27
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,714

Сообщение от рони
если нужно можно добавить кавычки, двоеточие и прочие знаки [., сюда];
Что значит нужно? Это необходимо! Написали решение, которое всё время нужно исправлять. И в принципе оно у вас плохо поддерживается, так как легче сказать, что в слово входит, чем что в слово не должно входить!
Ответить с цитированием
  #17 (permalink)  
Старый 29.05.2019, 18:33
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Malleys,
ссылку на сахар не подскажите?
Ответить с цитированием
  #18 (permalink)  
Старый 29.05.2019, 18:48
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,714

В учебнике Ильи Кантора написано: https://learn.javascript.ru/regexp-c...anitsa-slova-b (это магия , не объясняется откуда взялось \b, почему всё-таки только граница английских слов)

https://en.wikipedia.org/wiki/Regula...racter_classes

Последний раз редактировалось Malleys, 29.05.2019 в 18:54.
Ответить с цитированием
  #19 (permalink)  
Старый 29.05.2019, 18:53
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Malleys,
как узнать про поддержку Позитивный просмотр назад (?<=\W) ?
Ответить с цитированием
  #20 (permalink)  
Старый 29.05.2019, 19:02
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,714

https://caniuse.com/#feat=js-regexp-lookbehind
https://kangax.github.io/compat-tabl...ind_Assertions (включая node.js)
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Кириллица в Windows и команды cmd -VenoM- Node.JS 0 23.02.2017 13:28
sockjs кириллица faecker AJAX и COMET 0 07.06.2015 21:19
Utf 8 и кириллица l-liava-l AJAX и COMET 7 02.04.2012 16:06
Не проходит запрос в базу если в поле кириллица Sadist_dead Серверные языки и технологии 1 26.11.2011 17:12
POST запрос воспринимается как OPTIONS neshta AJAX и COMET 0 29.03.2011 23:34