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