簡體   English   中英

正則表達式以匹配C#中的單獨整數列表

[英]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+)*$ 
  • 以整數開頭,因此為'\\ d +'。 即1個或多個數字字符('0'-'9')
  • 然后制作一組包含',\\ 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM