проверка регулярных выражений для диапазона чисел или алфавитов A и D

#c# #asp.net

#c# #asp.net

Вопрос:

Я создал выражения регулярных выражений с веб-сайта онлайн-генератора регулярных выражений. Но ни одно из них не работает. Какие изменения я должен внести в них? Пожалуйста, помогите!!!

для диапазона чисел между [0 — 30] или либо A, либо D,

ввод [0,1,2, …, 30] допустим, но он также проверяет числа выше 30. Аналогично со всеми регулярными выражениями, проверяющими числа выше максимального диапазона.

 Regex.IsMatch(dr["ECO"].ToString(), @"([0-9]|[12][0-9]|30|A|D)$")
  

для диапазона чисел между [0 — 25] или либо A, либо D

 Regex.IsMatch(dr["GEOGRAPHY"].ToString(), @"(^(2[0-5]|1[0-9]|[1-9])|A|D)$")
  

для диапазона чисел между [1 — 20] или либо A, либо D

 Regex.IsMatch(dr["HEALTH_SCI"].ToString(), @"([0-9]|1[0-9]|20|A|D)$")
  

Регулярные выражения также отображаются допустимыми в некоторых онлайн-тестерах, но в C # эти регулярные выражения не работают. В чем проблема? Пожалуйста, помогите!!!

Комментарии:

1. Трудно помочь вам понять, что происходит не так, без входных данных для ваших методов регулярных выражений.

2. Ваш ожидаемый ввод не ясен. Пожалуйста, отредактируйте и добавьте примеры, которые должны пройти проверку, и примеры, которые не должны

3. Кроме того, вы несовместимы с используемыми вами якорями. # 2 использует привязки к началу и концу строки, но остальные используют только End.

4. Также обязательно используйте инструмент C # regex generator. Не все языки используют одинаковые правила.

5. @AleksAndreev Я отредактировал свой вопрос. На самом деле проблема в том, что все регулярные выражения допускают числа, превышающие диапазон. Я имею в виду, что регулярное выражение для 1-20 также проверяет число выше 20. Пожалуйста, помогите!!!

Ответ №1:

Для 0-30 или A или D смотрите здесь

 ^(([1-2]{0,1}[0-9]{1})|A|D|30)$
  

Для 0-25 или A или D смотрите здесь

 ^(([1]{0,1}[0-9]{1})|2[0-5]{1}|A|D)$
  

0-20 или A или D должны быть легко реализованы на основе первых 0-30…

РЕДАКТИРОВАТЬ: Добавлены ссылки на регулярные выражения, протестированные в regex101 согласно предложению Aleks, я не знал, что это можно сделать, спасибо за совет.

РЕДАКТИРОВАТЬ: Обновлена ссылка на первое решение, поскольку я впервые использовал это средство, я все испортил!

Комментарии:

1. Пожалуйста, покажите мне, как я могу написать регулярное выражение для [1 — 20], а не для [0 — 20]. Пожалуйста, помогите!!!

2. Я думаю, что оказал бы вам медвежью услугу, если бы сделал это, это небольшая правка в версии 0-30, если вы сможете увидеть, что нужно изменить, это поможет вам понять, как работает регулярное выражение.

3. @Barry вы можете сохранить проверенное вами регулярное выражение и указать его в своем ответе (точно так же, как я сделал в своем ответе)