8 votes

Création de regexp avec des caractères spéciaux

Je suis en train de créer une requête pour 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);
  });
});

Mais parfois, le titre comporte une parenthèse. Cela me donne l'erreur :

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

Le titre recherché est cat(22).

Quel est le moyen le plus simple pour que la regex accepte les parenthèses ? Merci.

15voto

Vous pouvez échapper à tous les caractères spéciaux des regex avec code emprunté à cette réponse .

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

1voto

TuK Points 1306

Échappez-la avec une barre oblique inversée. Et testez-le sur un site comme http://rejex.heroku.com/

/cat\(22/

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X