簡體   English   中英

使用正則表達式驗證字符串-1-30(最多2個小數位)

[英]Validate a string using regular expressions - 1-30 with up to 2 decimal places

如標題所示,我需要一個可以驗證輸入字符串的正則表達式,以確保它是1-30到2個小數位之間的數字。

例如,

4 is fine
10.25 is fine
15.3 is fine
29.99 is fine
30 is fine
30.01 is not fine

編輯:所以由於我使用的系統的限制,它必須是一個正則表達式,我已經嘗試了幾件事,

我可以做到

^\d{1,2}(\.\d{1,2})?$ 

最多允許2位數字,最多2位小數。

編輯:對於您需要正則表達式的特定情況,請嘗試以下操作:

^(?!0)(30(\\.0{1,2})?|[12]?\\d(\\.\\d{1,2})?)$

分解:

^ ... $ -確保正則表達式在字符串的開頭和結尾處開始和結束。

(?!0) -負前瞻以確保我們不以0開頭

(30(\\.0{1,2})? -30(可選),后跟.0或.00

| 要么...

[12]? 僅1或2的十位數

\\d 1個非可選單位數字

(\\.\\d{1,2})? 可選的.digit或.digitdigit

不幸的是,此正則表達式不容易調整以適合任何范圍的數字。 (寫一個程序來自動吐出這樣的正則表達式將是一個有趣的項目。)


否則我會說:不要重新發明輪子。

double result;
if (double.TryParse(inputstring, out result))
{
    if (result >= 1.0 & result <= 30.0)
    {
        return true;
    }
}
return false;

如果不是兩位小數並且需要,可以計算Round(result, 2)

盡管可以編寫單個正則表達式來測試上述所有條件,但我不會這樣做。

我將首先使用正則表達式檢查小數點后的位數,然后在解析字符串后將范圍測試留給。

下面此正則表達式將允許小數點后0〜2個位數(例如1.201.1.12 )。 請注意情況1.如果您不希望這種情況,請將{0,2}更改為{1,2}

^\d+(\.\d{0,2})?$

請注意,上述正則表達式將.2視為無效,因為該正則表達式可確保整個部分始終包含至少1位數字。

驗證字符串后,您可以解析數字並檢查其范圍,就像在Patashu的答案中一樣。

應該這樣做:

^([12]?\d(\.\d{2})?|30(\.\d{2})?)$

[12]?\\ d(。\\ d {2})? -這表示從1到29.99或30.00或30的數字

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM