Harry
Harry

Reputation: 54939

Creating regexp with special characters

I'm creating a query for mongodb:

app.get('content/:title',
function(req, res) {
  var regexp = new RegExp(req.params.title, 'i');

  db.find({
    "title": regexp,
  }).toArray(function(err, array) {
    res.send(array);
  });
});

But sometimes the title has a parenthese in it. This gives me the error:

SyntaxError: Invalid regular expression: /cat(22/: Unterminated group
    at new RegExp (unknown source)

The title that is being searched for is cat(22).

What's the easiest way to make the regex accept parenthesis? Thanks.

Upvotes: 9

Views: 8394

Answers (2)

user1106925
user1106925

Reputation:

You can escape all possible regex special characters with code borrowed from this answer.

new RegExp(req.params.title.replace(/([.?*+^$[\]\\(){}|-])/g, "\\$1"), "i");

Upvotes: 18

TuK
TuK

Reputation: 3556

Escape it with a backslash. And test it on a site like http://rejex.heroku.com/

/cat\(22/

Upvotes: 1

Related Questions