[英]Regex to match separate integer list in c#
我想使用Regex匹配逗號分隔的整數列表。 我使用了波紋管模式,但對我不起作用。
if (!Regex.IsMatch(textBox_ImportRowsList.Text, @"^([0-9]+(,[0-9]+))*"))
{
errorProvider1.SetError(label_ListRowPosttext, "Row Count invalid!");
}
有效輸入:
1
1,2
1,4,6,10
輸入無效:
1,
1.1
1,A
2,/,1
,1,3
使用以下正則表達式:
^\d+(,\d+)*$
編輯
驗證逗號分隔的字符串的最佳方法是
string someString = "1,2,3";
bool myResults = someString.Split(';').
Any<string>(s => !isNumeric(s));
if(myResults)
Console.Writeln("invalid number");
else
Console.Writeln("valid number");
public bool isNumeric(string val)
{
if(val == String.Empty)
return false;
int result;
return int.TryParse(val,out result);
}
以下內容也可能對您有用。 此正則表達式還將捕獲一個空字符串。
^(\d+(,\d+)*)?$
要么
^\d+(,\d+)*$
您將星號放在錯誤的位置。 代替這個:
@"^([0-9]+(,[0-9]+))*"
...用這個:
@"^([0-9]+(,[0-9]+)*)"
此外,您應該像開始一樣錨定結尾,並且實際上不需要最外面的括號:
@"^[0-9]+(,[0-9]+)*$"
您可以使用^\\d+(,\\d+)*$
但正如@Lazarus所指出的那樣,這可能是正則表達式有點過分使用和string.Split()
會更好地利用,甚至可以將其與如果您要操縱數字, int.tryParse
。
您可以嘗試使用此代碼
List<string> list = new List<string>();
list.Add("1");
list.Add("1.1");
list.Add("1,A");
list.Add("2,/,1");
foreach (var item in list)
{
if (!Regex.IsMatch(item, @"^([0-9](,[0-9])*)$"))
{
Console.WriteLine("no match :" + item);
}
}
試試這個
String strInput = textBox_ImportRowsList.Text;
foreach (String s in strInput.Split(new[]{',', ' '}, StringSplitOptions.RemoveEmptyEntries))
{
if(!Regex.IsMatch(s, @"^\d+(,\d+)*$"))
{
errorProvider1.SetError(label_ListRowPosttext, "Row Count invalid!");
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.