Raj
Raj

Reputation: 837

how to pass a variable to a regex

I have a find statement like this

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

It is giving answer.But i need to some value of variable instead of that harcoded value MT. How to achieve this ? Thanks.

UPDATE I tried like "/."+searchterm+"./" Its not working.

Upvotes: 4

Views: 2733

Answers (5)

Md. A. Barik
Md. A. Barik

Reputation: 457

Take a look at this code: (I'm using mongoose)

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));
}

I think you will find it helpful

Upvotes: 0

Phil
Phil

Reputation: 274

Replace /.*MT.*/ with new RegExp( ".*" + variable + ".*" )

Upvotes: 3

guessimtoolate
guessimtoolate

Reputation: 8642

Try this:

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

Upvotes: 1

Raj
Raj

Reputation: 837

Finally i got from here

it is "Venue.type": new RegExp(queryParams.et)

Upvotes: 0

Philipp
Philipp

Reputation: 69703

Instead of using the inline syntax to create a regular expression, you can also use the RegExp object to create one based on a string

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

Upvotes: 5

Related Questions