Регулярное выражение C# неправильно отклоняет недопустимые значения музыкальных нотC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Регулярное выражение C# неправильно отклоняет недопустимые значения музыкальных нот

Сообщение Anonymous »

Я пытаюсь написать строку регулярного выражения для проекта, который обрабатывает музыку.
Предполагается, что входные данные являются допустимой нотой, но это работает не во всех случаях. , и я не могу найти никакой документации, которая могла бы помочь.
Regex h = new Regex(@"(((A|C|D|F|G)?(#?))|(B|E))?\d\d?",
RegexOptions.IgnoreCase);
Match X = h.Match(Console.ReadLine());

if (X.Success)
{
Console.WriteLine("VALID");
}
else
{
Console.WriteLine("INVALID");
}
Console.ReadLine();

Он должен разрешать ввод данных в формате C#1, за исключением B,E где они должны быть B1 или E1.
(Примечание: 1 является заменой любого целочисленного значения)
Полный действительный список входных данных:
C = a,c,d,f,g
B = b,e
1 = any integer value
C1
C#1
B1

Неверный список:
B#1
CCCCC1
C####1
1C
I AM A FISH
C
H (any character not in the defined list)
H#1
H1

В настоящее время код неправильно помечает эти примеры как действительные, хотя они должны быть недействительными:
CCCCCCC1
B#1


Подробнее здесь: https://stackoverflow.com/questions/793 ... ote-values
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»