看来简单,但做不出来的正则表达式问题
用以下表达式限制输入金额(金额小于1000)的问题,但当输入100. 或 100.1 或 100.25 都提示错.
为什么?
[0-9]{0,3}|([0-9]{0,3}[.]{0,1}[0-9]{0,2})
问题点数:20、回复次数:7Top
1 楼saucer(思归)回复于 2004-12-04 03:17:14 得分 5
都提示错??
are you using ASCII numbers?
string[] slist = {"100.","100.1","100.25"};
foreach (string s in slist)
{
Console.WriteLine("{0} matches? {1}", s, Regex.IsMatch(s, "^([0-9]{0,3}|([0-9]{0,3}[.]{0,1}[0-9]{0,2}))$"));
}
100. matches? True
100.1 matches? True
100.25 matches? TrueTop
2 楼acxcod(acx)回复于 2004-12-04 09:53:14 得分 0
使用的是ASCII numbers,真的报错.
我是用在DataGrid中的模扳列中的TextBox控件中的,但应该是一样的吧.不会因为是模板列就不行吧?Top
3 楼thinhunan(THIN[MVP_asp.net])回复于 2004-12-04 11:36:24 得分 5
你试试分别用主键区的数字和数据键区的数字会不会出错Top
4 楼acxcod(acx)回复于 2004-12-04 17:22:02 得分 0
试过了,同样的错Top
5 楼OneDotRed(武装到眼神)回复于 2004-12-04 18:22:42 得分 5
匹配1000以内的正数,试试这个
string pattern = @"^(1000(\.0*)?|([1-9]\d{1,2}|\d)(\.\d*)?)$";
if ( Regex.IsMatch( numericString , pattern ) )
{
xxx...
}Top
6 楼OneDotRed(武装到眼神)回复于 2004-12-04 18:24:19 得分 5
你的那个可以匹配0009或9999的Top
7 楼acxcod(acx)回复于 2004-12-05 20:17:51 得分 0
然来要这样才行的:
^([0-9]{1,2}[\.]{1,1}[0-9]{1,1})|([1][0][0])|([0-9]{0,2})$
这是一个100分为满分的成绩的正则表达式.
Top




