В приложении .NET (написанном на C #) у меня есть пользовательский интерфейс со списком и текстовым полем, используемым для ввода строки фильтра для фильтрации того, что отображается в списке. Я обновляю фильтр по мере ввода пользователя.
Теперь я хочу разрешить использование регулярных выражений в строке фильтра, что создает проблему. Поскольку пользователь вводит выражение, оно может быть недопустимым, например, между временем, когда набирается открывающая скобка, и временем, когда набирается закрывающая скобка. Создание Regex с недопустимым выражением вызывает исключение, и я хочу предотвратить это. Один из способов - поймать исключение, но мне было интересно, есть ли способ проверить, является ли выражение допустимым регулярным выражением, не пытаясь фактически создать с его помощью Regex.
2 ответа
Просто поймай исключение. Учитывая, что это будет происходить в ответ на ввод данных пользователем, существенного снижения производительности не будет.
У меня был бы специальный начальный символ, который пользователь вводит, чтобы указать, что они запускают регулярное выражение, в этот момент вы можете остановить обработку набранного текста в реальном времени до тех пор, пока не будет набран специальный конечный символ, после чего вы обновитесь и примените регулярное выражение .
rxstart(YOUR REGEX HERE)rxend
и проанализируйте rxstart(
и )rxend
все, что находится между ними, определено как регулярное выражение и протестировано. Другая идея: дать пользователю флажок, чтобы он мог указать» Сейчас я набираю регулярное выражение ".
Похожие вопросы
Новые вопросы
c#
C # (произносится как «резкий») - это высокоуровневый, статически типизированный язык программирования с несколькими парадигмами, разработанный Microsoft. Код C # обычно нацелен на семейство инструментов и сред выполнения Microsoft .NET, включая, среди прочего, .NET Framework, .NET Core и Xamarin. Используйте этот тег для вопросов о коде, написанном на C # или в формальной спецификации C #.
^.+$
вот и вы: D