У меня есть следующий фрагмент кода, в котором я проверяю имя для недопустимых символов, а false возвращается, как только пользователь вводит недопустимый символ (допустимые символы определены в регулярном выражении) ,Проверка строки ввода для недопустимого символа с использованием regex
Проблема: это работает нормально, если пользователь вводит недопустимый символ в конце строки, но если пользователь вводит какой-либо недопустимый символ между ItemName, т.е. перемещая курсор где-то в середине ItemName, тогда он разрешен для записи недопустимого символа, т.е. true возвращается, а false должен быть возвращен.
Какую ошибку я делаю при определении регулярного выражения? Или любая другая ошибка? Спасибо
bool validName = true;
Regex regex = new Regex(@"[a-zA-Z0-9_-]+$");
if (regex.IsMatch(ItemName, 0) == false) validName = false;
if (!validName)
{
return false;
}
else
{
return true;
}
Пожалуйста, дайте мне знать, если что-то неясно.
Редактировать: Я изменил свое регулярное выражение с (@ "[a-zA-Z0-9 _-] + $") на (@ "^ [a-zA-Z0-9 _-] * $"), и он сработал , Есть ли очевидная ошибка, которую я делаю, или это правильное решение?
Ваше регулярное выражение выглядит хорошо для меня .. –
Изменение '+' на '*' также позволит обрабатывать пустую строку, а при добавлении '^' при запуске теперь будет выполняться полная строка для этого шаблона или нет. – NeverHopeless