将匹配与负先行相结合的正则表达式

  • 本文关键字:相结合 正则表达式 regex
  • 更新时间 :
  • 英文 :


我正在寻找一个实现以下功能的正则表达式:

  • 仅匹配包含[a-z0-_]的单词(so/^[a-z0-9-_]+$/i(
  • 与单词"不匹配;测试";(因此/^(?!test).*$/i(

这两个需求都很容易单独实现。但是,将两个需求组合在一个表达式中的正则表达式会是什么样子呢?

您可以将匹配逻辑内联到第二个正则表达式中,即使用:

^(?!test$)[a-z0-9_-]+$

演示

仔细注意负面前瞻(?!test$)。当放置在模式的最开始时,这断言匹配不是精确的test。但是,应该允许1testtesting,因为它们并不完全是test

还要注意,我使用的字符类与您的版本略有不同。我们应该把-放在类的最后,因为9-_实际上会被解释为9和下划线之间的所有字符,这可能不是您想要的。

最新更新