expressão regular não correspondendo parcialmente a uma string

0

Eu já vi alguém fazer esta pergunta, mas a resposta não funcionou no meu caso. Eu tenho um reg exp estruturado como o abaixo:

/regexp/(?i:mktg)

para evitar condições de maiúsculas e minúsculas. Eu precisarei construir esta expressão contendo "mktg" mas não contendo as palavras "round" AND "SMP" em qualquer caso de caractere. Alguém disposto a ajudar? Eu já tentei /regexp/([^?i:SMP]) e /regexp/^((?!SMP).)*$ , mas eles ainda vão puxar essa string.

obrigado,

Valeria

    
por Valeria Raciti 06.03.2018 / 17:58

1 resposta

0

AFAIK isso deve fazer o trabalho:

^(?i)(?=.*mktg)((?!round|smp).)*$

Explicação:

^           : 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

Casos de teste:

Match: mktg
Match: abc mktg xyz
No match: round mktg 
No match: SmP mktg 
No match: SPM ROUND 
    
por 06.03.2018 / 19:09

Tags