Есть строка:
=СУММ(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
является валидным. Если проверка первой группы не проходит успешно, совпадение считается не найденным.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
У меня есть несколько компонентов по сути никак не связанных между собой, первый это ShoppingCards
При успешной загрузке Ajax функция onYouTubeIframeAPIReady ни в какую не хочет работатьЕсть подозрение, что функция эта вызывается только один раз
Есть строка: СЧЁТЕСЛИМН('ИСХ_Сделки'!$B:$B;C$3;'ИСХ_Сделки'!$J:$J;$A18)СУММ(C18:I18)AK18+AT18+AB18+S18+J18СУММ(U18:AA18) На выходе нужно получить: СЧЁТЕСЛИМН('ИСХ_Сделки'!$B:$B;C$3;'ИСХ_Сделки'!$J:$J;$A18)СУММ(C122:I122)AK122+AT122+AB122+S122+J122СУММ(U122:AA122)