Regex mongodb正则表达式,包含一系列unicode字符
我尝试使用mongodb(版本3.4)$regex操作符和一系列unicode字符。但我没能让它工作(我用机器人来测试它) 我尝试了以下方法:Regex mongodb正则表达式,包含一系列unicode字符,regex,mongodb,unicode,pcre,cjk,Regex,Mongodb,Unicode,Pcre,Cjk,我尝试使用mongodb(版本3.4)$regex操作符和一系列unicode字符。但我没能让它工作(我用机器人来测试它) 我尝试了以下方法: db.getCollection('myCollection').find( { "field": { $regex: /[\x{20000}-\x{2A6D6}]/ } }) 它输出以下错误: 错误:第4行:无效的正则表达式 我设置的正则表达式必须与CJK统一表意文字扩展B的所有字符匹配。 它似乎与C
db.getCollection('myCollection').find(
{
"field": {
$regex: /[\x{20000}-\x{2A6D6}]/
}
})
它输出以下错误:
错误:第4行:无效的正则表达式
我设置的正则表达式必须与CJK统一表意文字扩展B的所有字符匹配。
它似乎与CJK unicode十六进制值的使用无关,因为我在更简单的正则表达式(如
$regex://[\x{0}-\x{1}]/
你能帮我理解为什么我的正则表达式不起作用吗?你必须使用简单的引号来支持PCRE表达式(cf),并且必须避开反斜杠。因此,以下措施应该有效:
db.getCollection('myCollection').find(
{ "field": {
$regex: '[\\x{20000}-\\x{2A6D6}]'
}
})
这个模式不是应该用JS正则表达式解析吗?请尝试
/(?:[\uD840-\uD868][\uDC00-\uDFFF]|\uD869[\uDC00-\uDED6])/
等效项。或者,检查它是否支持ES6:/[\u{20000}-\u{2A6D6}]/u
/[\u{20000}-\u{2A6D6}]/u
生成错误(u不是有效的正则表达式标志),如果没有u
,错误是正则表达式无效。如果使用字符串文字怎么办$regex:'[\x{0}-\x{1}]
/(?:[\uD840-\uD868][\uDC00-\uDFFF]|\uD869[\uDC00-\uDED6])/
被mongo接受,但没有产生任何结果(应该是,考虑到我拥有的数据集),我仍然感到奇怪why@revo$regex:'[\x{0}-\x{1}]
产生相同的错误“无效正则表达式”