我尝试使用带有一系列 unicode 字符的 mongodb(版本 3.4($regex运算符。但我无法让它工作(我正在使用 robomongo 来测试它(。
我尝试了以下方法:
db.getCollection('myCollection').find(
{
"field": {
$regex: /[x{20000}-x{2A6D6}]/
}
})
它输出以下错误:
错误:第 4 行:正则表达式无效
我设置的正则表达式必须与 CJK 统一表意文字扩展 B 的所有字符匹配。 这似乎与使用 CJK unicode 十六进制值无关,因为我在更简单的正则表达式中遇到了同样的错误,例如$regex: /[x{0}-x{1}]/
你能帮我理解为什么我的正则表达式不起作用吗?
您必须使用简单引号来支持 PCRE 表达式 (cf https://docs.mongodb.com/manual/reference/operator/query/regex/(,并且必须转义反斜杠。因此,以下内容应该有效:
db.getCollection('myCollection').find(
{ "field": {
$regex: '[\x{20000}-\x{2A6D6}]'
}
})