首页/数据/NoSQL 速查/$regex 正则查询
本包目录(322 条)
MongoDB99 条
Elasticsearch89 条ClickHouse56 条时序与列式28 条选型与架构50 条

$regex 正则查询

字符串正则匹配:预编译正则对象或 $regex/$options 表达式都可;只有锚定前缀(^)且区分大小写时才有机会走索引。

NoSQL 速查数据更新于 2026-10-12
写法一{name: /alice/i}
写法二{name: {$regex: "^张", $options: "i"}}
索引前提^ 前缀锚定且不使用 i 选项

示例

示例
db.users.find({ name: { $regex: "^张", $options: "i" } })
db.users.find({ name: /alice/i })
不含 ^ 的子串匹配一律全集合扫描;用户输入直接拼入正则存在 ReDoS 与语义偏差风险。

易错点

  • $in 数组里混用正则对象属于非法组合,多模式匹配要拆成 $or

数据来源与参考

  • MongoDB Manual: $regex
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌