How do I verify that a string only contains letters, numbers, underscores and dashes in Python?



To verify that a string contains only letters, numbers, underscores, and dashes in Python -

  • Use re.fullmatch() function with a pattern like [A-Za-z0-9_-]+ for regex-based checking.
  • Use set comparison with all() function for simple logic-based validation.
Many systems restrict input to certain characters for security or formatting reasons. In this case, the allowed characters are alphabets (A-Z, a-z), digits (0-9), underscores (_), and hyphens (-).

Using Regular Expressions

The re module in Python allows you to define patterns to validate strings. You can use re.fullmatch() function to check if the entire string matches a specific pattern, such as allowing only letters, digits, underscores, or dashes.

Example

In the following example, we use re.fullmatch() function with a Regex pattern that matches the entire string -

import re def is_valid(text): return re.fullmatch(r"[A-Za-z0-9_-]+", text) is not None print(is_valid("User_123-Name")) # Valid print(is_valid("Invalid@Name")) # Invalid 

Here, the pattern [A-Za-z0-9_-]+ ensures that all characters belong to the allowed set -

True False 

Using Set Comparison

Set comparison checks if all characters in the string are part of a predefined set of valid characters like letters, numbers, underscores, or dashes. It is a simple way to validate custom rules without regular expressions.

Example

In this example, we compare characters with a predefined set -

def is_valid(text): allowed = set("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_-") return all(char in allowed for char in text) print(is_valid("Safe_String-42")) # Valid print(is_valid("Oops!")) # Invalid 

This method gives you full control over character rules and works without importing external modules -

True False 
Updated on: 2025-09-02T13:22:52+05:30

13K+ Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements