C# regex составить регулярное выражение

Необходимо составить регулярное выражение для входной строки, вот моя попытка:

Regex regex = new Regex(@"\A[pPrRnNbBqQkK][a-zA-Z][1-8]-[a-zA-Z][1-8][pPrRnNbBqQkK]*");

введите сюда описание изображения

Итак, из чего должна состоять строка, которую я собираюсь проверять: первая буква p, r, n, b, q или k в верхнем или нижнем регистре, дальше идет буква в диапазоне a-h в в. или н. регистре, дальше цифра от 1 до 8, дальше "-", потом опять буква a-h и цифра 1-8 и в конце необязательная буква prnbq в в. или н. регистре

Пожалуйста, помогите исправить мою попытку.


Ответы (1 шт):

Автор решения: Wiktor Stribiżew

Используйте

(?i)^[prnbqk][a-h][1-8]-[a-h][1-8][prnbqk]?$

См. пример работы регулярного выражения.

Подробности

  • (?i) - регистронезависимый поиск
  • ^ - начало строки
  • [prnbqk] - буква из набора prnbqk
  • [a-h] - буква от a до h
  • [1-8] - цифра от 1 до 8
  • - - дефис
  • [a-h] - буква от a до h
  • [1-8] - цифра от 1 до 8
  • [prnbqk]? - необязательная буква из набора prnbqk
  • $ - конец строки.
→ Ссылка