Retracer les expressions régulières de la firebase database est différent dans java et javascript

J’ai un enregistrement dans ma firebase database: \w{3}_\d{5}

Lorsque je récupère cet enregistrement dans une chaîne Java, il se présente comme suit: \w{3}_\d{5}

Cependant, lorsque j’affecte cette chaîne Java à la variable JavaScript, elle se présente comme suit: w{3}_d{5} c’est-à-dire sans barre oblique inverse

Donc, si je l’enregistre dans la firebase database en tant que \\w{3}_\\d{5}

  • La chaîne Java sera: \\w{3}_\\d{5}
  • La chaîne Java atsortingbuée à la variable JavaScript sera: \w{3}_\d{5}

Pour résumer ce qui précède – j’ai besoin d’une expression régulière pour fonctionner à la fois (client et serveur), la seule solution que je vois consiste à enregistrer une expression régulière sous la forme \\w{3}_\\d{5} barres obliques du côté java.

Pourquoi JavaScript perd-il les barres obliques inverses? Quelle est la meilleure façon de contourner cela?

Apache Commons Lang a une classe avec des fonctions d’échappement de chaîne adaptées à différentes langues. La classe s’appelle SsortingngEscapeUtils et possède la méthode statique Ssortingng = escapeJava(Ssortingng) .


Une ancienne version de la bibliothèque avait une méthode escapeJavaScript , mais heureusement, escapeJava fonctionnerait tout aussi bien.

Une solution peut être

 \w{3}_\d{5} ===> [a-zA-Z0-9_]{3}_[0-9]{5}