2012-11-12 10 views
7

JSONの数字である文字列の正規表現を作成しようとしています。私はまだ正規表現を書くのが初めてです。JSON番号 hereのマシンの図が見つかりましたが、どのように攻撃するのかは分かりません。JSON numbers正規表現

正規表現が見つけなければならない文字列がいくつかあります。 "22"、 "55.75466"、 "-44.565" "55E-2" "69234.2423432 E78" すべてのヘルプは歓迎です!参考のため

+1

"JSONの数値である文字列"例を挙げて説明する。 「JSON番号」もちょっと困惑しています。 –

+2

json.orgによると、最終的な例はスペースのために数字と見なされるべきではありません。 –

答えて

16

、ここhttp://www.json.org/fatfree.htmlから "数" の図です:これと一致している必要があり

JSON number

正規表現は次のとおりです。

-?(?:0|[1-9]\d*)(?:\.\d+)?(?:[eE][+-]?\d+)? 
+0

あなた、または誰かが答えをどうやって説明してくれますか? –

+2

私はちょうど図を左から右にたどった。たとえば、最初に '-'に出くわすか、' 'をスキップして直進するのかを選択します。正規表現では、これは ' - ?'、または 'Zero or one '-'sとして表すことができます。その後、パスは '0'と '1'で始まる一連の数字(JSONは8進数をサポートしていないので、 '0123'のような数字を避けるため)の間で再び分割されます。正規表現では、これは "alternation"で表すことができます。これは ''(?:xxx | yyy) ''のようになります。 'xxx'と' yyy'は可能な "パス"です。等々。正規表現のより深い説明が必要な場合は、お知らせください。 –

+0

負の符号 " - "は正規表現に従って有効なjson番号です。 – drgs

1

acheong87の答えはあなたが必要と正規表現を提供しなければなりません。しかし、JSONを介して返される文字列が "数字である"かどうかを確認しようとしている場合は、これを行うことができます:

var valueAsString = "55e-2"; 
var isANumber = !isNaN(valueAsString);