Я видел, что кто-то уже задавал этот вопрос, но ответ не сработал в моем случае. У меня есть reg exp, структурированный следующим образом:
/regexp/(?i:mktg)
чтобы избежать условий регистра символов. Мне нужно будет построить это выражение, содержащее "mktg", но не содержащее слова "round"И"SMP" в любом регистре. Кто-нибудь готов помочь? Я уже пробовал /regexp/([^?i:SMP])
и /regexp/^((?!SMP).)*$
, но они все равно будут дергать за эту ниточку.
Спасибо,
Валерия
решение1
Насколько мне известно, это должно сработать:
^(?i)(?=.*mktg)((?!round|smp).)*$
Объяснение:
^ : beginning of line
(?i) : case insensitive
(?= : start lookahead, zero-length assertion, make sure we have
.* : 0 or more any character
mktg : literally "mktg"
) : end lookahead
( : start group
(?! : start negative lookahead, zero-length assertion, make we DON'T have:
round : literally "round"
| : OR
smp : literally "smp"
) : end lookahead
. : any character
)* : group must be repeated 0 or more times
$ : end of line
Тестовые случаи:
Match: mktg
Match: abc mktg xyz
No match: round mktg
No match: SmP mktg
No match: SPM ROUND