我试图返回其obsNum字段以1.
开头的文档。我编写了以下RegEx来过滤掉那些文档但是,它返回所有以1
开头的文档
Observations.getObservationsModelObject().find({
"ageGroup": ageGroup,
"obsNum": {
$regex: '^\s*1\.'
}
}, function(err, foundData) {});
我做错了什么?
此RegEx '^\s*1\.'
返回以下内容,而不是返回1.3,1.1& 1.2:
obsNum: 1.3
obsNum: 1.1
obsNum: 1.2
obsNum: 123
obsNum: 121`
答案 0 :(得分:2)
'^\s*1\.'
是字符串。删除backshash转义后的正则表达式将为^s*1.
,这意味着字符串应以任意数量的空格开头,后跟1,然后是任何字符。
您可以使用正则表达式文字语法
$regex: /^\s*1\./
或双重逃避反斜杠
$regex: '^\\s*1\\.'
我建议尽可能使用文字语法,因为它很容易且不易出错。
答案 1 :(得分:0)
您可能尝试的正则表达式是:
^(1\.\d+)
说明:
^
字符串的开头(…)
捕获括号:记住匹配1
字面数字\d
十进制数字+
至少一个