2017-02-20 5 views
1

場合eventString = {「タイムスタンプ」:1487204364889、「このUserEvent」:「花火」}正規表現整数で生成していない結果

eventString = JSON.stringify(event); 
Timestamp = eventString.match(/"Timestamp":^\d+$/)[1]; 
eventType = eventString.match(/"UserEvent":"([^"]+)"/)[1]; 

のeventTypeが文字列の形式で結果を生成しています。タイムスタンプは整数ではありません。

+0

'Timestamp = eventString.match(/" Timestamp ":(\ d +)/)[1]'にするべきではありませんか?パターンにはキャプチャグループは定義されていませんが、結果の配列の '[1]'アイテムにアクセスしようとしました。アンカーも誤って配置されているようです。 –

+1

なぜプロパティを取得するためにオブジェクトを文字列化していますか? 'event.Timestamp'を使うべきではありませんか? –

+0

正しく働いた@WiktorStribiżewありがとうございます。私はそれを解決としてマークすることができるように答えを作成してください。 – Iorek

答えて

1

パターンにはキャプチャグループは定義されていませんが、結果の配列の[1]アイテムにアクセスしてください。アンカーも誤って配置されているようです。それがnullでない場合、最初の変数に一致結果を割り当て、チェックすることをお勧めしていること

Timestamp = eventString.match(/"Timestamp":(\d+)/)[1]; 

注:

私はアンカーを削除し、桁のマッチングパターンの周りcapturng括弧を設定することをお勧めします問題を回避するためにキャプチャされた値にアクセスするだけです。

+1

しかし**なぜ??? **彼は 'event'オブジェクト(' event.Timestamp')でそれらにアクセスできますか? –

+1

@brahimmahrir:**それは問題ではありません。問題は、 'String#match'で使われた正規表現がなぜ一致しなかったのかということです。あるオブジェクトの特定の値にアクセスする方法ではありません。確かに、いくつかのJSONオブジェクトがある場合は、適切なメソッドなどを使用する方が適切です。 –

+1

彼の最後の[**コメント**](http://stackoverflow.com/questions/42354020/regex-on-anをご覧ください-integer-not-producing-results?noredirect = 1#コメント71859097_42354020)! –

関連する問題