我需要以下條件需要與多個條件
正則表達式的正則表達式表達- 應該接受的最大的5個數字則高達3位小數
- 也可以是負
- 它可以是零
- 它只能是數字(最多可達5位數)
- 它可以爲空
我曾嘗試以下,但它不是,它不是滿足所有的條件
@"^([\-\+]?)\d{0,5}(.[0-9]{1,3})?)$"
例如最大值可以容納從-99999.999到99999.999
我需要以下條件需要與多個條件
正則表達式的正則表達式表達我曾嘗試以下,但它不是,它不是滿足所有的條件
@"^([\-\+]?)\d{0,5}(.[0-9]{1,3})?)$"
例如最大值可以容納從-99999.999到99999.999
使用此正則表達式:
^[-+]?\d{0,5}(\.[0-9]{1,3})?$
我只做了兩處更改。首先,不需要通常需要轉義字符類中的任何字符,除了括號內的開合括號或可能的反斜槓本身。因此,我們可以使用[-+]
來捕獲一個初始正值或負值。其次,你需要逃避你的正則表達式中的點,以告訴引擎你想匹配一個文字點。
不過,我想大概這句話正則表達式如下:
^[-+]?\d{1,5}(\.[0-9]{1,3})?$
這將匹配一個五位數字,後跟一個可選的小數點,然後是一個三位數。
請注意,我們想捕捉的東西,如:
0.123
但不是
.123
即我們不希望捕捉到一個領先的小數點應該是不被至少一個前綴數。
演示在這裏:
對不起混淆...達到我的意思是5位數字達到99999或達到小數點後三位我意思是.999,它可以容納的最大值 – Mahajan344
^[ - +]?\ d {0,5}(\。[0-9] {1,3})?$是完美的,因爲它允許.123和0。123,用戶通常在十進制前輸入0 – Mahajan344
我假設你正在C#中完成這項工作,給定了符號。這裏有一些代碼可以用來測試你的表達式,有兩個更正:
\.
代替.
C#防止表達外來右括號:
var expr = @"^([\-\+]?)\d{0,5}(\.[0-9]{1,3})?$";
var re = new Regex(expr);
string[] samples = {
"",
"0",
"1.1",
"1.12",
"1.123",
"12.3",
"12.34",
"12.345",
"123.4",
"12345.123",
".1",
".1234"
};
foreach(var s in samples) {
Console.WriteLine("Testing [{0}]: {1}", s, re.IsMatch(s) ? "PASS" : "FAIL");
}
結果:
Testing []: PASS
Testing [0]: PASS
Testing [1.1]: PASS
Testing [1.12]: PASS
Testing [1.123]: PASS
Testing [12.3]: PASS
Testing [12.34]: PASS
Testing [12.345]: PASS
Testing [123.4]: PASS
Testing [12345.123]: PASS
Testing [.1]: PASS
Testing [.1234]: FAIL
抱歉混淆... upto我的意思是5位數達到99999或達到小數點後三位小數位.999最大可以容納 – Mahajan344
應該接受的最大的5個位數
[0-9]{1,5}
則高達3位小數
[0-9]{1,5}(\.[0-9]{1,3})?
它可以是負
[-]?[0-9]{1,5}(\.[0-9]{1,3})?
它可以是零
已經覆蓋。
它只能是數字(最多高達5位數的地方)
已經覆蓋。 '最多5位數'與您的第一條規則相抵觸,允許5.3。
它可以爲null
不包括在內。我強烈建議您刪除此要求。即使你的意思是'空',但我真誠地希望你能做到,你應該事先分開檢測這種情況,因爲你必須以不同的方式處理它。
您的正則表達式包含^
和$
。我不知道爲什麼。在您指定的規則中沒有關於行首或行尾的內容。它也允許領先的+
,這也是你的規則中沒有指定的。
首先,你需要像'\ .'那樣逃避'''.'。當它是一個光點時,它意味着「任何角色」,這肯定會給你帶來一些痛苦。如果可以,我建議在正則表達式之外進行空白/空白檢查。像:'valueIsOk = value.blank? || value.match?(正則表達式)'。如果沒有,只需在最後一個右括號之外敲擊另一個「?」。 – mroach
你的第四條規則與你的第一條規則相矛盾。您的模式實現了規則中沒有說明的開始行和行結束規則。沒有正則表達式可以處理'null':你的意思是'空'嗎?如果我把它作爲規範給出,我會拒絕它作爲含糊不清的。 – EJP
@EJP如果你覺得這樣,那麼你爲什麼回答? –