Я использовал Regex строку:Почему Regex.IsMatch несрабатывания возвратного
versionPattern = @"^\d+(.\d+){3}$"
проверить формат строки с 4 числа имеют дефис .
xxx.xxx.xxx.xxx or x.x.x.x ...
Но это возвращает истину шпагатом:
1.0.0.123
и возвращать ложную строку:
1.0.0.4
Мой код для этого:
if (Regex.IsMatch(svnShopLoorTable.Rows[i].ItemArray[2].ToString(), versionPattern))
{
//MessageBox.Show("OK");
}
else
{
//MessageBox.Show("Should be: x.x.x.x");
s += "\r\nProgram " + svnShopLoorTable.Rows[i].ItemArray[1].ToString() + " of SHOPFLOOR has wrong version format: "
+ svnShopLoorTable.Rows[i].ItemArray[2].ToString() + " should be formated as: " + "x.x.x.x";
Console.WriteLine(s);
}
Когда svnShopLoorTable.Rows[i].ItemArray[1].ToString()
является 1.0.0.123
это нормально, а не выводились s
. Но когда svnShopLoorTable.Rows[i].ItemArray[1].ToString()
является 1.0.0.4
, это отображение журнала в консоли:
Программа SetupSheet из цеховой имеет неправильный формат версии: 1.0.0.4 должен быть отформатированный как: хххх
Я не знаю, почему это проблема возникает. Пожалуйста, помогите мне объяснить и решить эту проблему. Цените любую помощь!
не может воспроизвести https://regex101.com/r/nC0wV7/1, возможно, попробуйте добавить 'M' модификатор' @ "(? М) регулярное выражение" ' –
возвращает ** ** верно для обоих случаев, хотя я бы избежал буквального '.'как для хорошей практики, так и для проверки фактической точки (иначе это означает любой символ, кроме новой строки). – hwnd
@AvinashRaj: Я следую за форматом Regex из [MDSN] (https://msdn.microsoft.com/en-us/library/sdx2bds0 (v = vs.110) .aspx) –