Возможно ли извлечь максимальную длину разрешенной строки из шаблона регулярного выражения после ее загрузки в объект C# Regex
?Extract Max Длина допустимой строки из объекта Regex
Если у меня есть строка регулярных выражений, определенная как @"^[A-Z0-9]{0,20}$"
, я мог бы использовать строковые манипуляции, чтобы получить максимально допустимую длину 20
.
Однако есть способ, я могу получить, что более легко, например, с помощью Regex
объекта следующим образом:
var r = new Regex(@"^[A-Z0-9]{0,20}$");
// var max = r.MaxLength;
Update
Чтобы установить некоторый контекст, у меня есть Asp.Net MVC 5, в котором мы используем RegexValidationAttribute
, чтобы обеспечить входную проверку наших моделей.
Что я хотел бы сделать, это переопределить этот атрибут, чтобы я мог добавить свойство Custom metadata, которое содержит максимально допустимую длину строки, проанализированную из строки регулярного выражения. В моем редакторе шаблонов строк я возьму значение пользовательского метаданных и добавлю атрибут maxlength=""
к тегу html <input>
. Теперь я знаю, что могу просто добавить StringLengthAttribute
и сделать это таким образом, но тогда я должен помнить, чтобы сохранить длину регулярного выражения и длину строки в синхронизации. И с более чем 1000+ моделей я хочу снять дубликаты требуемых усилий.
Используйте другое регулярное выражение для анализа предыдущего. – revo
Можете ли вы привести пример? – Nick
нет свойства, о котором я знаю, где вы могли бы прочитать, как долго может быть строка, и я также предполагаю, что она также не реализована. вы можете сделать это, сопоставить его со своей строкой и выдать количество совпадающих символов, если вы уверены, что существует предел - и есть совпадение. проблема заключается в том, что вы можете иметь столько символов, сколько хотите в шаблоне регулярных выражений, поэтому у вас просто не один фактический предел - то, что означает revo, - это проанализировать 20 из вашего регулярного выражения с другим регулярным выражением – prizm1