имя не должно содержать знаков препинания и не может начинаться с числа.
Но это не очень специфично, поэтому давайте посмотрим на исходный код:
Исходный код для класса System.Text.RegularExpressions.RegexParser показывает, что допустимые символы по существу [a-zA-Z0-9_]. Чтобы быть действительно точным, есть этот комментарий в методе, который используется для проверки правильности символа для имени группы захвата:
internal static bool IsWordChar(char ch) {
// According to UTS#18 Unicode Regular Expressions (http://www.unicode.org/reports/tr18/)
// RL 1.4 Simple Word Boundaries The class of <word_character> includes all Alphabetic
// values from the Unicode character database, from UnicodeData.txt [UData], plus the U+200C
// ZERO WIDTH NON-JOINER and U+200D ZERO WIDTH JOINER.
return CharInClass(ch, WordClass) || ch == ZeroWidthJoiner || ch == ZeroWidthNonJoiner;
}
И если вы хотите проверить это самостоятельно, этот скрипт .NET подтверждает, что есть много символов без пунктуации, которые не разрешены от имени группы захвата:
Ответ 2
Все, что соответствует \w, эффективно [a-zA-Z0-9_]