我有這樣的正則表達式C#ASP.NET MVC3模型驗證:百分比正則表達式用逗號
[RegularExpression(@"[0-9]*\,?[0-9]?[0-9]")]
這適用於幾乎所有情況下,除非數量大於100大於100 的任何數值應該顯示錯誤。 我已經嘗試過使用[Range],但它不適用於逗號。
有效期:0/0,0/0,00-100/100,0/100,00。
無效(Number> 100)。
我有這樣的正則表達式C#ASP.NET MVC3模型驗證:百分比正則表達式用逗號
[RegularExpression(@"[0-9]*\,?[0-9]?[0-9]")]
這適用於幾乎所有情況下,除非數量大於100大於100 的任何數值應該顯示錯誤。 我已經嘗試過使用[Range],但它不適用於逗號。
有效期:0/0,0/0,00-100/100,0/100,00。
無效(Number> 100)。
不知道零名的是在最終只可選的數字,但
# (?:100(?:,0{1,2})?|[0-9]{1,2}(?:,[0-9]{1,2})?)
(?:
100
(?: , 0{1,2})?
|
[0-9]{1,2}
(?: , [0-9]{1,2})?
)
Zero的在年底
# (?:100|[0-9]{1,2})(?:,0{1,2})?
(?:
100
| [0-9]{1,2}
)
(?: , 0{1,2})?
唯一的選擇,中,排列了沒有前導零的除了零本身
# (?:100(?:,0{1,2})?|(?:0|[1-9][0-9]?)(?:,[0-9]{1,2})?)
(?:
100
(?: , 0{1,2})?
|
(?:
0
|
[1-9] [0-9]?
)
(?: , [0-9]{1,2})?
)
# (?:100|0|[1-9][0-9])(?:,0{1,2})?
(?:
100
|
0
|
[1-9] [0-9]
)
(?: , 0{1,2})?
這是正則表達式符合您的標準:
^(?:(?:[0-9]|[1-9]{1,2})(?:,[0-9]{1,2})?|(?:100)(?:,0{1,2})?)$
(假設你的使用情況,我認爲你的字符序列出現的本身就是不嵌入其他內容。請讓我知道這是不是這樣的。)
這裏是一個Perl的程序這表明,正則表達式的樣本數據集。 (另見live demo。)
#!/usr/bin/env perl
use strict;
use warnings;
while (<DATA>) {
chomp;
# A1 => An integer between 1 and 99, without leading zeros.
# (Although zero can appear by itself.)
#
# A2 => A optional fractional component that may contain no more
# than two digits.
#
# -OR-
#
# B1 => The integer 100.
#
# B2 => A optional fractional component following that may
# consist of one or two zeros only.
#
if (/^(?:(?:[0-9]|[1-9]{1,2})(?:,[0-9]{1,2})?|(?:100)(?:,0{1,2})?)$/) {
# ^^^^^^^^A1^^^^^^ ^^^^^A2^^^^ ^B1 ^^^B2^^
print "* [$_]\n";
} else {
print " [$_]\n";
}
}
__DATA__
0
01
11
99
100
101
0,0
0,00
01,00
0,000
99,00
99,99
100,0
100,00
100,000
100,01
100,99
101,00
預期輸出
* [0]
[01]
* [11]
* [99]
* [100]
[101]
* [0,0]
* [0,00]
[01,00]
[0,000]
* [99,00]
* [99,99]
* [100,0]
* [100,00]
[100,000]
[100,01]
[100,99]
[101,00]
這正是我要找的,謝謝! – WagnerMaurer
OP指出的一件事是'Valid:0,00 - 100'。我只能假設> 100將是你的正則表達式匹配的'100.99'。也許你可以稍作修改 - '^(?:[0-9] | [1-9] [0-9] | 100(?=(?:,0 {1,2})?$ ))(?:,[0-9] {1,2})?$',+1無論如何 – sln
@sln - 對,你是。而你的正則表達式完美無缺!但是,我修正了我的正則表達式,因此終止'$'只會出現一次。我的方法:** A)**首先檢查一位或兩位數字和一個可選小數部分,然後** B)**檢查數字「100」及其可選小數部分(可能包括一個或兩個零)。我還包括了其他數據樣本。如果你看到我修改後的正則表達式的任何缺點與你的,請讓我知道。 – DavidRR
你是如何接受這個價值?爲什麼不會'int.TryParse()'工作? – paqogomez
除了@paqogomez的建議,你可以在這裏看到它的動作:http://stackoverflow.com/questions/1824326/convert-toint32-a-string-with-commas – brandonscript