我正在嘗試爲JSON中的數字編寫字符串的正則表達式。我仍然是新手撰寫正則表達式,我發現JSON號碼機器的圖表 here,但我不知道如何攻擊它。JSON數字正則表達式
下面是一些應該由正則表達式找到的字符串。 「22」, 「55.75466」, 「-44.565」 「55e-2」 「69234.2423432 E78」 任何幫助表示讚賞!
我正在嘗試爲JSON中的數字編寫字符串的正則表達式。我仍然是新手撰寫正則表達式,我發現JSON號碼機器的圖表 here,但我不知道如何攻擊它。JSON數字正則表達式
下面是一些應該由正則表達式找到的字符串。 「22」, 「55.75466」, 「-44.565」 「55e-2」 「69234.2423432 E78」 任何幫助表示讚賞!
僅供參考,這裏的 「數字」 圖從http://www.json.org/fatfree.html:
應該匹配,這是正則表達式:
-?(?:0|[1-9]\d*)(?:\.\d+)?(?:[eE][+-]?\d+)?
可以,或者有人向我解釋你是如何得到答案的? –
我只是按照從左到右的方式來繪製圖表。例如,首先你選擇下去遇到'-',或者直接跳過'-'。在正則表達式中,這可以表示爲「 - ?」,或者「零個或一個」 - 「s」。然後,路徑再次在'0'和以'1'開始的一系列數字之間分開(以防止像'0123'這樣的數字,因爲JSON不支持八進制)。在正則表達式中,這可以用「交替」來表示,看起來像這樣:''(?:xxx | yyy)''其中'xxx'和'yyy'是可能的「路徑」。等等。如果您需要對正則表達式進行更深入的解釋,請告訴我們。 –
neg符號「 - 」本身是根據您的正則表達式的有效json數字。不會彈起 – drgs
acheong87的答案應該提供您需要的正則表達式。但是,如果你只是想檢查一個字符串通過JSON返回「是一個數字」,那麼你可以這樣做:
var valueAsString = "55e-2";
var isANumber = !isNaN(valueAsString);
你或許應該解釋一下你的「這是JSON數字的字符串」的意思,最好舉一個例子。 「JSON號碼」也有點令人費解。 –
根據json.org你的最後一個例子不應該被視爲一個數字,由於空間。 –