Регулярное выражение в Javascript, которое фиксирует слово, только если оно НЕ находится в скобках

У меня есть такая строка:

This is very sad, and this is [very sad] and [test;very sad]

Что мне нужно, так это регулярное выражение, которое будет фиксировать «очень грустно», только если оно не заключено в квадратные скобки. Я пробовал примерно так:

[^\[](very sad)[^\]]

Но это, похоже, не работает, если в начале строки стоит «очень грустно», а когда это происходит - захватываются лишние пробелы вокруг строки, как это можно увидеть здесь:

https://regex101.com/r/zwgeXg/1

Обычное решение - very sad(?![^\][]*]).

Wiktor Stribiżew 01.05.2018 19:11

@ WiktorStribiżew или very sad(?![^[]*])

Roko C. Buljan 01.05.2018 19:16

@ RokoC.Buljan Да, в любом случае, я не могу найти точный дубликат. Решение - просто сопоставить все, что находится в квадратных скобках, а затем сопоставить то, что нужно OP в других контекстах. /\[[^\][]*]|(very sad)/g, а затем используйте некоторый код для применения необходимых изменений.

Wiktor Stribiżew 01.05.2018 19:19

@ WiktorStribiżew Спасибо, ваш ответ, а также ответ RokoC.Buljan, похоже, работают, но если не возражаете, я спрашиваю - эквивалентны ли они? Глядя на regexp101, я, кажется, не понимаю разницы ...

user2384366 01.05.2018 19:50

Они не эквивалентны. Но подойдет для этого конкретного случая.

Wiktor Stribiżew 01.05.2018 20:05
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
6
34
0

Другие вопросы по теме