【问题标题】:how to pass a variable to a regex如何将变量传递给正则表达式
【发布时间】:2013-04-19 08:47:24
【问题描述】:

我有一个这样的查找语句

collSession.find({"Venue.type": /.*MT.*/}).toArray(function (err, _clsSession)
        {
            console.log(_clsSession);
        });

它给出了答案。但我需要一些变量值而不是那个硬编码值 MT。 如何做到这一点? 谢谢。

更新我试过像 "/."+searchterm+"./" 它不工作。

【问题讨论】:

  • 仅供参考,如果您还没有意识到关于 MongoDB 和正则表达式的这一点 - 您的搜索每次都会命中搜索集合中的每个文档。

标签: javascript regex node.js mongodb


【解决方案1】:

看看这段代码:(我用的是猫鼬)

exports.getSearchPosts = (req, res, next) => {
const keyword = req.body.keyword;
Post.find({ postTitle: new RegExp( ".*" + keyword + ".*" ) }).then(posts => {
    res.render('post/search', {
        pageTitle: 'Search result for: ' + keyword,
        posts: posts,
        category: postCategory,
        posts: catPost,
    });
 }).catch(err => console.log(err));
}

我想你会发现它很有帮助

【讨论】:

    【解决方案2】:

    /.*MT.*/ 替换为new RegExp( ".*" + variable + ".*" )

    【讨论】:

      【解决方案3】:

      试试这个:

        var pattern = 'concatenate string' + here,
              regexp = new Regexp(pattern);
      

      【讨论】:

        【解决方案4】:

        终于得到from here

        它是“Venue.type”:new RegExp(queryParams.et)

        【讨论】:

          【解决方案5】:

          除了使用内联语法创建正则表达式,您还可以使用RegExp 对象基于字符串创建一个

          var searchPhrase = "MT";
          var regularExpression = new RegExp(".*" + searchPhrase + ".*");
          collSession.find({"Venue.type": regularExpression}) [...]
          

          【讨论】:

            猜你喜欢
            • 2020-06-09
            • 2017-10-24
            • 2012-01-24
            • 2010-10-04
            • 2014-08-10
            • 2020-03-05
            • 2018-04-06
            • 2020-01-04
            • 1970-01-01
            相关资源
            最近更新 更多