#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. Спасибо! Это очень помогло!