Есть строка:
=СУММ(A18:I18)
Нужно написать регулярное выражение где производился бы поиск всех цифр 18 в строке, кроме тех, у которых перед 18 есть буква A.
Пишу /(?<=A)+18/g - выдаёт ошибку Недопустимый квантификатор ?.
В Chrome и любой другой среде, поддерживающей стандарт ECMA2018, можно воспользоваться блоком предварительного просмотра назад:
console.log("=СУММ(A18:I18)".match(/(?<![A\d])18(?!\d)/g))
console.log("=СУММ(A18:I18)".replace(/(?<![A\d])18(?!\d)/g, "<ТУТ>$&</ТУТ>"))
Подробности
(?<![A\d]) - сразу перед 18 не должно быть A или цифры18 - 18(?!\d) - сразу после 18 не должно быть цифрыВ других случаях придётся решить проблему с помощью захватывающих групп:
var s = "=СУММ(A18:I18)";
var rx = /([A\d])?18(?!\d)/g;
console.log(s.replace(rx, function ($0, $1) { return $1 ? $0 : "<ТУТ>" + $0 + "</ТУТ>" }))
Тут ([A\d])? — необязательная захватывающая группа, она находит A или цифру. Если этот шаблон захватывает текст, буфер группы №1 непустой и в таком случае совпадение 18 является валидным. Если проверка первой группы не проходит успешно, совпадение считается не найденным.
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости