【问题标题】:I can't do a regular expression我不能做正则表达式
【发布时间】:2015-09-21 07:41:53
【问题描述】:

我在 mongoDB 中有这个变量:Física,我有一个模型,其属性 nameEducación Física

我会做一个正则表达式,传递变量 Física 不返回我 Educación Física 但如果数据库有一个名称为 fisicaFisiCa 或其他名称的模型,我将其返回 YES。

我正在使用nodeJSmongoDBJavascript...

对不起我的英语,非常感谢。

【问题讨论】:

    标签: javascript regex node.js mongodb


    【解决方案1】:

    你需要的东西是:

    1. 锚点^ 表示“输入开始”,$ 表示“输入结束”

    2. 不区分大小写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'}})
      

      【讨论】:

        猜你喜欢
        • 2023-03-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-12-17
        • 1970-01-01
        • 1970-01-01
        • 2020-10-29
        相关资源
        最近更新 更多