【发布时间】:2017-04-17 10:36:24
【问题描述】:
我正在尝试返回 obsNum 字段以 1. 开头的文档。我编写了以下正则表达式来过滤掉这些文档,但是它返回所有以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`
【问题讨论】:
-
您将正则表达式作为字符串传递,因此反斜杠需要双转义。使用
$regex: /^\s*1\./ -
@Tushar 你是绝对正确的。这是我的正则表达式的唯一问题。你能告诉我为什么我们需要在正则表达式字符串中加入双反斜杠吗?
-
因为在字符串中,反斜杠用于转义后面的字符。因此,一个用于转义,另一个用于正则表达式中的元字符。或者简单地使用正则表达式文字语法,如第一条评论所示。
标签: javascript regex mongodb