regex – Python: Regular expression to match alpha-numeric not working?

regex – Python: Regular expression to match alpha-numeric not working?

Python has a special sequence w for matching alphanumeric and underscore when the LOCALE and UNICODE flags are not specified. So you can modify your pattern as,

pattern = ^w+$

Your regex only matches one character. Try this instead:

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

regex – Python: Regular expression to match alpha-numeric not working?

…check if is alpha-numeric and possibly contains an underscore.

Do you mean this literally, so that only one underscore is allowed, total? (Not unreasonable for player names; adjacent underscores in particular can be hard for other players to read.) Should a_b_c not match?

If so:

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

The new first part of the condition checks for an empty value, which simplifies the regex.

This places no restrictions on where the underscore can occur, so all of _a, a_, and _ will match. If you instead want to prevent both leading and trailing underscores, which is again reasonable for player names, change to:

if re.match(^[a-zA-Z0-9]+(?:_[a-zA-Z0-9]+)?$, playerName):
// this regex doesnt match an empty string, so that check is unneeded

Leave a Reply

Your email address will not be published. Required fields are marked *