【问题标题】:I can't do a regular expression我不能做正则表达式
【发布时间】:2015-09-21 07:41:53
【问题描述】:
我在 mongoDB 中有这个变量:Física,我有一个模型,其属性 name 是 Educación Física。
我会做一个正则表达式,传递变量 Física 不返回我 Educación Física 但如果数据库有一个名称为 fisica 或 FisiCa 或其他名称的模型,我将其返回 YES。
我正在使用nodeJS、mongoDB、Javascript...
对不起我的英语,非常感谢。
【问题讨论】:
标签:
javascript
regex
node.js
mongodb
【解决方案1】:
你需要的东西是:
锚点:^ 表示“输入开始”,$ 表示“输入结束”
不区分大小写:i 标志的意思是“忽略事物是否大写”
所以:
var rex = /^fisica$/i;
// ^ ^ ^
// | | +------ i flag (ignore case)
// +------+-------- anchors
例子:
if (rex.test(someString)) {
// It matches...
}
在下方回复您的评论:
我怎样才能把 fisica 当作变量?因为fisica是一个例子,它是一个从前端发送到后端的变量
为此,您需要正则表达式构造函数RegExp:
var rex = new RegExp("^" + yourVariable + "$", "i");
如果yourVariable 的值中有任何字符在正则表达式中是特殊的,它们需要用反斜杠进行转义。 This question and its answers 涵盖转义正则表达式。所以在那种情况下:
var rex = new RegExp("^" + someQuotingFunction(yourVariable) + "$", "i");
【解决方案2】:
在 mongoDB 中,您可以在查询中使用$regex,选项如下:
db.collection.find({name:{$regex:/^fisica/, $options:'i'}})