我想建立浮點數正則表達式最大長度爲5 我的號碼都可以有分隔符「」或「」或者它可以是一個自然數(不浮動)正則表達式爲長度爲5和5的浮點數。分離
我想允許任何的這個值
XXXXX
XXXX.X
XXX.XX
XX.XXX
X.XXXX
X.X
X.XX
X.XXX
X.XXXX
XX.X
XXX.X
etc.
我想建立浮點數正則表達式最大長度爲5 我的號碼都可以有分隔符「」或「」或者它可以是一個自然數(不浮動)正則表達式爲長度爲5和5的浮點數。分離
我想允許任何的這個值
XXXXX
XXXX.X
XXX.XX
XX.XXX
X.XXXX
X.X
X.XX
X.XXX
X.XXXX
XX.X
XXX.X
etc.
^\ S *(([0-9] {1,3}。([0 -9] {3})[0-9] {3})|?([0-9] +))([0-9] {1,2})\ S $應該驗證您的需求
EDIT 1:這將驗證:
100000,33
1.000,13
還有一件事,你可以編輯它以適應你的需求。 希望這有助於!
爲什麼不使用C#的條件?是這樣的:
var x = 12345;
if (x.ToString().Length == 5 && x.ToString().Contains("."))
{
//do something
}
更新: 我創建了像你上面給出什麼,讓它的雙榜,因爲INT犯規接受十進制的樣本名單。
List<double> doubleList = new List<double>(new double[]
{
12345,
1234.5,
123.45,
12.345,
1.2345,
1.2,
1.23,
1.234,
1.2345,
12.3,
123.4,
});
private void button1_Click(object sender, EventArgs e)
{
foreach (var x in doubleList)
{
bool isNum = Regex.IsMatch(x.ToString(), @"^\-{0,1}\d+(.\d+){0,1}$");
int countOfDot = Regex.Matches(x.ToString(), @"\.").Count;
if (countOfDot == 1 && isNum) //number w/ decimal place
{
string[] spLitX = x.ToString().Split('.');
if (spLitX[1].Count() <= 5) //float max of 5digits
{
Console.WriteLine(x);
}
}
else if (countOfDot == 0 && isNum) //number w/o decimal place
{
Console.WriteLine(x);
}
else
{
//do nothing . . .
}
}
}
輸出:
12345
1234.5
123.45
12.345
1.2345
1.2
1.23
1.234
1.2345
12.3
123.4
It't不接受自然數。例如131 –
@ArmenMkrtchyan修復它 –
@Robin是的,謝謝,第一次閱讀不正確。 –