Reputation: 54939
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
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
Reputation: 3556
Escape it with a backslash. And test it on a site like http://rejex.heroku.com/
/cat\(22/
Upvotes: 1