You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

需求可检测字符串同时包含两个指定单词的正则表达式

正则表达式:检查字符串是否同时包含两个指定子串

没问题,我来帮你搞定这个需求!根据你给出的匹配/不匹配规则,我们需要一个能验证字符串同时包含"rooster"和"hen"这两个连续子串的正则,不管它们的顺序、是否被其他字符隔开,甚至连在一起也没问题。

最终正则表达式

^(?=.*rooster)(?=.*hen).+$

正则拆解

让我给你拆解一下每个部分的作用:

  • ^:锚定字符串的起始位置,确保我们从开头就开始检查
  • (?=.*rooster):正向预查断言,表示整个字符串中必须存在任意数量的字符(.*)后紧跟"rooster"子串——简单说就是字符串里得有"rooster"
  • (?=.*hen):和上面同理,断言字符串里必须有"hen"子串
  • .+$:匹配任意一个或多个字符(确保字符串非空,避免空字符串误匹配)

验证你的测试用例

我们来对应你给出的情况验证一下:

不匹配的情况

  • "rooster":只有"rooster",没有"hen",第二个预查断言失败,不匹配
  • "hen":只有"hen",没有"rooster",第一个预查断言失败,不匹配
  • "heroostern":字符串里有"rooster"但没有连续的"hen"(是h-e-n分散开的),第二个预查断言失败,不匹配

匹配的情况

  • "rooster hen":两个子串都存在,匹配
  • "rooster cock hen":两个子串都存在,中间有其他字符也没问题,匹配
  • "hen rooster":子串顺序反过来,预查不关心顺序,匹配
  • "roosterhen":两个子串连在一起,都能被检测到,匹配
  • "henrooster":同样连在一起,匹配
  • "henchmen garoostern":"henchmen"开头有"hen","garoostern"里有"rooster",两个子串都存在,匹配

额外说明

如果需要忽略大小写(比如匹配"Rooster"或"HEN"也符合要求),可以根据你使用的语言添加大小写不敏感修饰符:

  • JavaScript中:/^(?=.*rooster)(?=.*hen).+$/i
  • Python中:re.compile(r'^(?=.*rooster)(?=.*hen).+$', re.IGNORECASE)

内容的提问来源于stack exchange,提问作者musicinmusic

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:42:57