2016-09-27 81 views
-1

如何制定這是一個正則表達式使用正則表達式匹配小數範圍

if (a > 0 and a < 50) 
    Match 
else 
    NoMatch 

哪裏a.十進制值作爲小數點分隔符。

我知道我會更容易使用上面的代碼,但不幸的是我必須做它作爲正則表達式。

+0

這是學校? –

+0

爲什麼你必須把它作爲一個正則表達式?這可能是最糟糕的解決方案。你如何編寫一個將驗證1.7685939828892840293480283420834的正則表達式,這將符合你的需求描述? pi的所有數字都會如何,這也適合該範圍?你的老師有沒有告訴你它必須是一個正則表達式? –

+0

這是針對基於正則表達式進行驗證的組件中的參數,並且在輸入的值與正則表達式不匹配時發出抱怨。我不具備在不幸的情況下處理這種驗證,即使它會很容易堆積 –

回答

1

不是說我贊成使用這樣的正則表達式,但你可以這樣做:

^(?=[0.]*[1-9])((?:0|1|2|3|4)[0-9]?\.(?:\d*))$ 

Demo and Explanation

+0

好的答案! +1 – XenoRo

+0

我想現在它取決於用例......你的答案是簡約,易於遵循,並提供整個比賽作爲一個單一的組;雖然我的分組和亂七八糟,但將字符串的每個部分分成代表組成部分的組,例如前導零,以及小數點前後數字,準備用於「模式匹配器」結構處理特定組中的數據而不是整個事物。 =) – XenoRo

+0

感謝您的回答。我確實訪問了您所指的網站,但未能找到我的問題的答案。我給了它另一個機會:-) –

1

我的看法:

^(0+((\.)0*[1-9]\d*))|(0*(([1-4]\d)|[1-9])((\.)\d+)?)$

+1

這匹配50. OP指出'a​​> 0和一個<50'。也匹配0.0 – dawg

+0

[見這裏](https://regex101.com/r/EdmENC/1) – dawg

+0

@dawg哦,你說得對!它也不應該匹配0(.0 +)!對不起,我的滑倒!定影... – XenoRo