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

私は、この正規表現を使ってデータが有効な座標であることを確認しようとしています。これをFirebaseルールで動作させるのに問題があります。私は正規表現をオンライン正規表現のテスターで実行するとき、それは正常に動作しますが、Firebaseのルールはそれを受け入れていないようです。ここでFirebaseルールの正規表現の問題

は私firebaseルールです:

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

は、この作業を取得するためにとにかくはありますか?

+0

完全な理解のためのコードを記入してください。 – Rahul

答えて

2

エスケープするバックスラッシュを2倍にする必要がありますが、正に、式に含まれる冗長なグループ化構造が多すぎます。

使用

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

または完全にバックスラッシュを避ける:

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

正規表現は、文字列like in this online demoと一致します。

詳細

  • ^ - 1または0 +又は-
  • - 文字列の先頭は、
  • [-+]?Firebase regexでは、パターンのみの開始時に使用されるアンカーです)
  • [0-9]{1,2} - 1または2桁
  • [.] - ドット
  • [0-9]+ - 1+数字
  • ,から3桁の数字
  • ([.][0-9]+)?から1 - - コンマ
  • [-+]?から1又は0 +又は-
  • [0-9]{1,3}.と1+数字の1または0の配列(
  • $ - 文字列アンカーの末尾(パターンエンドの場合のみ、$はFirebase正規表現の文字列の終わりと一致します)。
+0

ありがとうございました。まさに私が探していたもの。それは素晴らしい作品です! –