1

Ich versuche, diese Regex oben zu verwenden, um zu bestätigen, dass die Daten eine gültige Koordinate sind. Ich habe Probleme, dies mit den Firebase-Regeln zu erreichen. Wenn ich die Regex in einem Online-Regex-Tester ausfühle, funktioniert es einwandfrei, aber Firebase-Regeln scheinen das nicht zu akzeptieren.Firebase-Regeln Regex Probleme

Hier ist meine Feuerbasis Regel:

".validate": "newData.isString() && newData.val().matches(/^([-+]?)([\d]{1,2})(((\.)(\d+)(,)))(([-+]?)([\d]{1,3})((\.)(\d+))?)$/)" 

Gibt es trotzdem, diese Arbeit zu bekommen?

+0

Post vollständigen Code zum Verständnis. – Rahul

Antwort

2

Sie müssen die Escaping Backslashes verdoppeln, aber ehrlich gesagt enthält Ihr Ausdruck zu viele redundante Gruppierungskonstrukte.

Verwenden

.matches(/^[-+]?\\d{1,2}\\.\\d+,[-+]?\\d{1,3}(\\.\\d+)?$/) 

oder die Schrägstriche ganz vermeiden:

.matches(/^[-+]?[0-9]{1,2}[.][0-9]+,[-+]?[0-9]{1,3}([.][0-9]+)?$/) 

Die Regex like in this online demo Strings übereinstimmen.

Einzelheiten:

  • ^ - Beginn der Zeichenfolge (in Firebase regex ist es ein Anker, wenn am Anfang des Musters nur verwendet)
  • [-+]? - 1 oder 0 + oder -
  • [0-9]{1,2} - 1 oder 2 Ziffern
  • - ein Punkt
  • [0-9]+ - 1+ digits
  • , - ein Komma
  • [-+]?-1 oder 0 oder +-
  • [0-9]{1,3}-1 zu 3 Ziffern
  • ([.][0-9]+)?-1 oder 0 Sequenzen von . und 1+ digits (Beachten Sie, dass nicht erfassende Gruppen nicht unterstützt werden.)
  • $ - Ende des String-Ankers (nur wenn am Ende des Pattern $ das Ende des Strings in Firebase regex entspricht).
+0

Vielen Dank. Genau das, was ich gesucht habe. Es funktioniert super! –