При использовании JavaScript мне нужно регулярное выражение, которое соответствует любому экземпляру @ {this-format} в любой строке.Моим оригинальным регулярным выражением было следующее:
@{[a-z-]*}
Однако мне также нужен способ "избежать" этих экземпляров.Я хочу, чтобы, если вы добавите лишний @, совпадение было экранировано, например, @@ {this}.
Первоначально я использовал отрицательный вид сзади:
(?<!@)@{[a-z-]*}
И это сработало быпросто отлично, за исключением ... lookbehinds - это функция ECMAScript2018, поддерживаемая только Chrome.
Я читал некоторых людей, предлагающих использовать отрицательный набор символов.Таким образом, мое маленькое регулярное выражение стало таким:
(?:^|[^@])@{[a-z-]*}
... что сработало бы так же хорошо, за исключением того, что не сработало бы, если сложить два из них вместе: @ {foo} @ {bar}
Итак, кто-нибудь знает, как мне этого добиться?Помните, что необходимо выполнить следующие условия:
- Найти @ {this} в любом месте строки
- Уметь сбежать как @@ {this}
- Beв состоянии поставить несколько смежных, например, @ {this} @ {two}
- Lookbehinds не должны использоваться