Ответ 1
Короткий ответ
Разрешенные символы [a-zA-Z0-9_]
Длинный ответ
В соответствии с Документы Microsoft:
имя не должно содержать знаков препинания и не может начинаться с числа.
Но это не очень специфично, поэтому давайте посмотрим на исходный код:
Исходный код для класса 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 подтверждает, что есть много символов без пунктуации, которые не разрешены от имени группы захвата: