정규 표현식이 부분적으로 문자열과 일치하지 않습니다.

정규 표현식이 부분적으로 문자열과 일치하지 않습니다.

이미 누군가가 이 질문을 하는 것을 보았지만 내 경우에는 답변이 작동하지 않았습니다. 아래와 같이 구성된 reg exp가 있습니다.

/regexp/(?i:mktg)

문자 대소문자 조건을 피하기 위해. "mktg"는 포함하지만 "round"라는 단어는 포함하지 않는 표현식을 작성해야 합니다.그리고모든 문자의 경우 "SMP"입니다. 도와주실 분 계신가요? 나는 이미 /regexp/([^?i:SMP])및 를 시도했지만 /regexp/^((?!SMP).)*$여전히 이 문자열을 당길 것입니다.

감사해요,

발레리아

답변1

AFAIK 이것이 작업을 수행해야 합니다.

^(?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 

관련 정보