Я хочу, чтобы проверить textbox
в моей C# формы, поэтому я сделал этот метод, чтобы сделать проверку нижеTextbox проверка с помощью регулярных выражений
только номера допускается.
Разрешены только a-z.
Замена более чем одного места с одним пространством и возврат строки.
Проблема Единственное число разрешено всегда получать сообщение об ошибке, даже если нет a-z.
В конце концов, любое предложение или улучшение ниже кода?
Я сделал некоторые обновления теперь, пожалуйста, если их какие-либо предложения или улучшения любой проверки обычного стандарта я пропустил
правка 20/3/2016 1:12 вечера GMT
GMT Время now: D
public void input_validation()
{
string num_regex = @"^[0-9]*$"; //only digits allowed in this textbox
string word_regex = @"[a-zA-Z]+"; //only a-z allowed in this textbox
string Multi_spaces = @"\s+|\s{2,}"; //more than on white spaces
Regex Nregex = new Regex(num_regex);
Regex Wregex = new Regex(word_regex);
Regex Mregex = new Regex(Multi_spaces);
//To check all empty textbox within the groupbox
foreach (var emptytxtbox in GB_CUST_INFO.Controls.OfType<TextBox>())
{
if (string.IsNullOrEmpty(emptytxtbox.Text.Trim()))
{
MessageBox.Show("Missing Information are no allowed\n","Missing Information",MessageBoxButtons.OK,MessageBoxIcon.Error);
emptytxtbox.BackColor = Color.Red;
return; //to stop the check on first empty textbox
}
else
{
emptytxtbox.BackColor = Color.White; //to rest the color of missed info at pervious check
}
if (Mregex.IsMatch(emptytxtbox.Text))
{
//just replacing the more than one white spaces with one white space and retrun to its textbox
emptytxtbox.Text = Mregex.Replace(emptytxtbox.Text," ");
}
}
if (!Nregex.IsMatch(TB_CUST_PHONE1.Text))
{
MessageBox.Show("Only Number are allowed for phone number", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
else if (!Nregex.IsMatch(TB_CUST_PHONE2.Text))
{
MessageBox.Show("Only Number are allowed for mobile number", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
//else if (Mregex.IsMatch(TB_CUST_NAME.Text))
//{ //just replacing the more than one white spaces with one white space and retrun to its textbox
// TB_CUST_NAME.Text = Mregex.Replace(TB_CUST_NAME.Text, " ");
//}
/*else if (Wregex.IsMatch(TB_CUST_NAME.Text))
{
MessageBox.Show("Only a-z are allowed");
}*/
else { cust_data_insert(); }
}
Какая ошибка вы получаете по номерам? Вы применяете все три условия для одного и того же «текстового поля»? –
Я имею в виду, что это всегда правда .. Я получаю сообщение. Я пишу независимо от того, что вход в текстовое поле 4656 или 456asd всегда верно – samer
хорошо, давайте начнем с этого. 'if (regex1.IsMatch (TB_CUST_PHONE1.Text))' вызывает ошибку, возникающую при совпадении регулярного выражения - другими словами, если это похоже на номер телефона. Ваша логика инвертирована. Более того, «разрешено только число» и «допускается только« a-z », логически невозможно объединить, поэтому ваша проблема не имеет смысла. – zeromus