Выражения регулярных выражений в C#

#c# #regex

#c# #регулярное выражение

Вопрос:

Я пытаюсь создать регулярное выражение проверки имени, чтобы проверить, передано ли имя в правильном формате. Он должен быть в формате, подобном — ‘John’, ‘Sarah’, поэтому не допускаются пробелы, не допускаются другие символы и не допускаются числа. Кроме того, первая буква должна быть заглавной, а все остальные последующие буквы должны быть не заглавными.

Я попытался написать несколько выражений регулярных выражений и проверить их в regexr, но выражение, которое там работает, работает некорректно в C#

Может ли кто-нибудь поделиться решением для исключения любого другого символа, который НЕ ЯВЛЯЕТСЯ буквой?

Мне кажется, что существуют некоторые различия между регулярным выражением, используемым в regexr, и регулярным выражением, используемым в C #, и именно поэтому выражение, которое работает в regexr, не работает в C#

Заранее благодарю вас! 🙂

РЕДАКТИРОВАТЬ: Например: Выражение равно — ([A-Z]{1}[a-z]*)w . В regexr это должна быть 1-я заглавная буква, затем любая другая буква, все пробелы или другие символы исключены. Когда я копирую это в свой проект C #, он по-прежнему позволяет писать пробелы или другие символы, такие как . ; и т.д.

EDIT2: реализация C # выглядит следующим образом:

             string name = nameCapitalLetterCheck_textBox.Text.ToString();
            string nameFormat = @"([A-Z]{1}[a-z]*)w ";
            if (Regex.IsMatch(name,nameFormat))
            {
                nameCapitalLetterCheck_result.Text = "OK";
                nameCapitalLetterCheck_result.Foreground = green;
                nameCapital_hint.Visibility = Visibility.Hidden;
            }
            else
            {
                nameCapitalLetterCheck_result.Text = "Error";
                nameCapitalLetterCheck_result.Foreground = red;
                nameCapital_hint.Visibility = Visibility.Visible;
            }
  

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

1. Поскольку ваш вопрос остается в силе, вы просто запрашиваете, чтобы для вас было написано регулярное выражение. Вместо этого вы должны показать свои усилия на данный момент и предоставить нам подробную информацию о возникшей проблеме.

2. Можете ли вы поделиться тем, как выглядит ваша реализация на C #?

3. Извините, я забыл привести пример того, что я пробовал

4. Regex.IsMatch вернет true, если найдет совпадение с вашим регулярным выражением в любом месте строки. Это не обязательно означает, что оно соответствует всей строке. Вам следует обратить внимание на использование ^ $ операторов и в вашем регулярном выражении.

5. Я удивлен, что никто не указал на это, но ваши требования к тому, что считается именем, очень ограничительны. Мой друг Патрик О’Коннор обиделся бы. kalzumeus.com/2010/06/17 /…

Ответ №1:

Используйте

 ^p{Lu}p{Ll} z
  

Смотрите доказательство

Объяснение

 --------------------------------------------------------------------------------
  ^                        the beginning of the string
--------------------------------------------------------------------------------
  p{Lu}                    any uppercase character
--------------------------------------------------------------------------------
  p{Ll}                   any lowercase character (1 or more
                           times (matching the most amount possible))
--------------------------------------------------------------------------------
  z                       the end of the string
  

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

1. Спасибо! Это очень помогло!