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

正则表达式匹配问题:含dist/codis、不含name且不以district结尾

解决正则匹配的多条件筛选问题

嘿,刚接触正则没几天就碰到这种组合条件的需求很正常,我帮你一步步拆解思路,给出解决方案:

需求拆解

你需要从给定列表中筛选出同时满足以下三个条件的条目:

  1. 包含dist或codis(不区分大小写,适配列表里CoDis、Dist这类大小写变体)
  2. 完全不包含name(不区分大小写)
  3. 不以district结尾(不区分大小写)

正则表达式写法

结合所有条件,最终的正则(带不区分大小写修饰符)如下:

/^(?!.*name)(?=.*(dist|codis))(?<!district)$/i

各部分细节解释

  • ^:锁定字符串开头,确保匹配范围覆盖整个条目
  • (?!.*name):否定前瞻,检查整个字符串里不存在任何name(.*匹配任意字符,确保不管name在哪个位置都能被检测到)
  • (?=.*(dist|codis)):肯定前瞻,强制要求字符串里至少包含dist或codis中的一个
  • (?<!district)$:否定后顾,检查字符串结尾前的内容不是district,也就是整个条目不以district收尾
  • i:不区分大小写修饰符,完美适配列表里的大小写混合写法

最终匹配结果

从你给出的列表中,符合所有条件的条目是:

  • district_code
  • county_district_code
  • CoDis
  • Dist
  • Dist Code
  • DistCode

如果要在代码里验证(比如用JavaScript),可以参考这段示例:

const targetList = ['district_code', 'county_district_code', 'CoDis', 'Dist', 'Dist Code', 'DistCode', 'educational_service_district', 'District', 'District Name', 'DistrictName', 'County Code'];
const filterRegex = /^(?!.*name)(?=.*(dist|codis))(?<!district)$/i;
const matchedItems = targetList.filter(item => filterRegex.test(item));
console.log(matchedItems); // 输出上述符合条件的条目数组

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 09:53:33