需求可检测字符串同时包含两个指定单词的正则表达式
正则表达式:检查字符串是否同时包含两个指定子串
没问题,我来帮你搞定这个需求!根据你给出的匹配/不匹配规则,我们需要一个能验证字符串同时包含"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
相关产品推荐
相关产品推荐

