#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 вы можете сохранить проверенное вами регулярное выражение и указать его в своем ответе (точно так же, как я сделал в своем ответе)