Это не накладывает никаких ограничений на то, где подчеркивание может встречаться, поэтому все «_a», «a_» и «_» будут совпадать. Если вместо этого вы хотите запретить начальное и конечное подчеркивание, что опять-таки оправданно для имен игроков, измените на:

, чтобы соответствовать строке, которая вводится с веб-сайта, чтобы проверить, является ли буквенно-цифровой и, возможно, содержит подчеркивание. Мой код:

if re.match('[a-zA-Z0-9_]',playerName):
            # do stuff

По некоторым причинам это соответствует сумасшедшим символам, например: nIg ○ ▲ ☆ ★ ◇ ◆

Я хочу только обычные A-Z и 0-9 и _ соответствия, есть что-то, что я здесь упускаю?

Ответы на вопрос(3)

является ли буквенно-цифровой символ и, возможно, содержит подчеркивание.

Вы подразумеваете это буквально, так что допускается только одно подчеркивание, всего? (Не является необоснованным для имен игроков; в частности, смежные подчеркивания могут быть трудными для чтения другими игроками.) Должен ли "a_b_c" не совпадать?

Если так:

if playerName and re.match("^[a-zA-Z0-9]*_?[a-zA-Z0-9]*$", playerName):

Новая первая часть условия проверяет наличие пустого значения, что упрощает регулярное выражение.

Это не накладывает никаких ограничений на то, где подчеркивание может встречаться, поэтому все «_a», «a_» и «_» будут совпадать. Если вместо этого вы хотите запретить начальное и конечное подчеркивание, что опять-таки оправданно для имен игроков, измените на:

if re.match("^[a-zA-Z0-9]+(?:_[a-zA-Z0-9]+)?$", playerName):
// this regex doesn't match an empty string, so that check is unneeded
Решение Вопроса

\w для сопоставления буквенно-цифровых символов и подчеркивания, когдаLOCALE а такжеUNICODE флаги не указаны. Таким образом, вы можете изменить свой шаблон как,

pattern = '^\w+$'

 interstar26 окт. 2014 г., 20:57
Что если указано LOCALE или UNICODE?
 Rozuur28 окт. 2014 г., 19:43
Не проверено, но должно соответствовать буквенно-цифровым символам указанной локали.

буйте это вместо этого:

if re.match('^[a-zA-Z0-9_]+,playerName): 

Ваш ответ на вопрос