RegEx for BMHT in a sequence是我以前的帖子。 我正在尋找使用縮寫建立一個數字,以及使用正則表達式的課程。使用縮寫準備號碼
現在我知道如何用BMTH縮寫來驗證數字。
現在我的下一個也是最後一個目標是使用縮寫建立一個數字。 例如-2T2H22.55應顯示爲-2,222.55 -2M2H22.63應顯示爲-2,000,222.63
幫助讚賞。
RegEx for BMHT in a sequence是我以前的帖子。 我正在尋找使用縮寫建立一個數字,以及使用正則表達式的課程。使用縮寫準備號碼
現在我知道如何用BMTH縮寫來驗證數字。
現在我的下一個也是最後一個目標是使用縮寫建立一個數字。 例如-2T2H22.55應顯示爲-2,222.55 -2M2H22.63應顯示爲-2,000,222.63
幫助讚賞。
Flex的腳本語言ActionScript是一種像JavaScript這樣的ECMAScript實現,因此正則表達式文本必須用斜線分隔,例如:/^(?:\d+B)?(?:\d{1,3}M)?(?:\d{1,3}T)?(?:\d{1}H)?(\.[0-9]*)?/
。
但是,該正則表達式仍然存在一些問題。首先,你不會在百位以後考慮減號或兩位數字。而且,雖然小數點可以是可選的,但如果它是目前您應該要求它後面至少有一個數字(因此+
,而不是最後一組中的*
)。
最後,您需要捕獲各種組件,以便您可以使用它們來構造數字。這裏是我的結果:
/^(-?)(?:(\d+)B)?(?:(\d{1,3})M)?(?:(\d{1,3})T)?(?:(\d)H)?(\d{0,2})(\.\d+)?$/
減號,如果存在的話,將在小組$1
抓獲。其餘組件將分組$2
到$7
。您可以在回調函數中使用它們來構造數字。另外,請注意,這個正則表達式中的所有內容都是可選的;它會匹配一個空字符串或只是一個連字符,所以你需要檢查。
哇,非常詳細的答案。好jorb;) – 2011-04-15 15:27:43
你使用什麼編程語言? – stema 2011-04-15 10:30:11
我正在使用Flex。看起來像Flex有一些問題。我創造了這個表達式:(?:\ d + B)?(?:\ d {1,3} M)?(?:\ d {1,3} T)?(?:\ d {1} ?(\。[0-9] *)?在RegExr中工作正常,但從未在Flex中工作。 – prasanna 2011-04-15 10:32:48
我不知道Flex和它使用的正則表達式引擎。您可以嘗試避免不捕捉羣體,即刪除'?:'。捕獲的值將被存儲到變量中(您不必使用它們)。在我看來,這是我看到的唯一可能有問題的事情。 – stema 2011-04-15 10:46:20