MongoDB RegEx无法正常工作

时间:2017-04-17 10:36:24

标签: javascript regex mongodb

我试图返回其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`

2 个答案:

答案 0 :(得分:2)

'^\s*1\.'字符串。删除backshash转义后的正则表达式将为^s*1.,这意味着字符串应以任意数量的空格开头,后跟1,然后是任何字符。

您可以使用正则表达式文字语法

$regex: /^\s*1\./

或双重逃避反斜杠

$regex: '^\\s*1\\.'

我建议尽可能使用文字语法,因为它很容易且不易出错。

答案 1 :(得分:0)

您可能尝试的正则表达式是:

^(1\.\d+)

说明:

  • ^字符串的开头
  • (…)捕获括号:记住匹配
  • 1字面数字
  • \d十进制数字
  • +至少一个