我想開始知道如何去符合下列條件創建一個正則表達式:正則表達式驗證,並提取字符串以十進制或分數
- 字符串必須以小數或分數 啓動
- 十進制應該是正數,最多可以保留兩位小數
- 分數應該是它自己的一個分數或一個整數和分數,即1 1/2,3/4,並用空格分隔。 (可能是冷靜,如果有人寫1和1/2,這新的將是1 1/2,但不是必需
- 列表項
我想驗證一個字符串,或爲十進制開始或一部分和得到提取的值在它外面
有效實例
"1 cup" = VALID = Extracted values: (1) (cup)
".5 cup" = VALID = Extracted values: (0.5) (cup)
"1.0 cup" = VALID = Extracted values: (1.0) (cup)
"1.10 cup" = VALID = Extracted values: (1.10) (cup)
"1/2 cup" = VALID = Extracted values: (1/2) (cup)
"1 1/2 cup" = VALID = Extracted values: (1 1/2) (cup)
"1 and 1/2 cup" = VALID = Extracted values: (1 1/2) (cup)
"1 and a 1/2 cup" = VALID = Extracted values: (1 1/2) (cup)
"1 & 1/2 cup" = VALID = Extracted values: (1 1/2) (cup)
無效實例
"1 1/2 1/4 1/4 cup" = INVALID (only allow whole and fraction, or one fraction)
"1.034 cup" = INVALID (2 decimal places only)
"cup 1/2" = INVALID (not the start of the string)
編輯 我到目前爲止有:
解析分數:
\d*\s*(and*|and a*|\s*)\d+\/?\d*(.*)$
解析小數:
^\d{0,2}(\.\d{1,2})?$
我的合併版本:
(\d*\s*&|and*|and a*|\s*\s*\d+\/?\d*)|(\d{0,2}\.\d{1,2})*(.*)$
只是不知道如何正確地加入2,它可以更好地優化?和無效的一個仍然解析
任何幫助,將不勝感激,謝謝
問候DotnetShadow
我已編輯我的帖子,包括我目前爲止如果有幫助 – DotnetShadow