PHP正则匹配练习:修正正则规则使输出符合测试预期
修正方案
你当前使用的/.t/仅能匹配任意字符后紧跟字母t的连续两位字符组合,无法覆盖book类匹配场景,也没有排除首字符为t的情况(比如测试用例中的tv),可直接替换为以下符合所有测试要求的正则:
$Regex_Pattern = '/(?<!^)t|ook/';
匹配逻辑说明
正则包含两个并行匹配规则,满足任意一个就会返回true:
- 匹配所有不在字符串开头位置的字母
t - 匹配连续的
ook字符组合
完全匹配你给出的所有测试场景预期:
- 测试场景1:
jacket包含非开头的t→ 输出true,符合预期 - 测试场景2:
axe无匹配内容→false、hat包含非开头的t→true、camera无匹配内容→false,完全符合预期 - 测试场景3:
hat包含非开头的t→true、book包含ook→true、camera无匹配→false、boombox无匹配→false、tv的t在开头且无ook→false,完全符合预期
规则合规说明
- 保留了要求的前后
/定界符 - 正则总长度仅12,远低于27的长度限制,不会触发代码中的长度警告
内容的提问来源于stack exchange,提问作者Ashish Jindal
相关产品推荐
相关产品推荐

