正则表达式不匹配部分字符串

正则表达式不匹配部分字符串

我看到已经有人问过这个问题,但答案对我而言不起作用。我有一个结构如下的正则表达式:

/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 

相关内容