Dùng sequence \w (word character) khớp alphanumeric + underscore. Để chỉ alphanumeric (không underscore), dùng [a-zA-Z0-9].
1. \w - Alphanumeric + Underscore
import re
# ^\w+$ : Toàn bộ chuỗi chỉ chứa word characters
result = re.search(r'^\w+$', 'Tutorials123')
print(result.group()) # Tutorials123
# Test các trường hợp
tests = ['Tutorials123', 'hello_world', 'abc123', 'abc-123', 'abc 123']
for t in tests:
print(f'{t:15} -> {bool(re.match(r"^\w+$", t))}')
Kết quả
Tutorials123 -> True
hello_world -> True (có underscore)
abc123 -> True
abc-123 -> False (có dấu -)
abc 123 -> False (có space)
2. Chỉ Alphanumeric (KHÔNG underscore)
# Chỉ chữ cái và số
pattern = r'^[a-zA-Z0-9]+$'
tests = ['abc123', 'hello_world', 'Test123']
for t in tests:
print(f'{t:15} -> {bool(re.match(pattern, t))}')
Kết quả
abc123 -> True
hello_world -> False (có _)
Test123 -> True
3. Unicode Alphanumeric (Python 3)
\w với flag re.UNICODE (mặc định Python 3) khớp chữ cái Unicode:
# Python 3: \w bao gồm chữ cái có dấu, tiếng Nhật, tiếng Hàn...
print(re.match(r'^\w+$', 'TiếngViệt123')) # Match!
print(re.match(r'^\w+$', '日本語123')) # Match!
4. Kiểm tra từng ký tự (findall)
# Tìm tất cả alphanumeric sequences
re.findall(r'\w+', 'Hello, World! 123')
# ['Hello', 'World', '123']
Tóm tắt
| Yêu cầu | Pattern |
|---|---|
| Alphanumeric + _ (ASCII) | ^[a-zA-Z0-9_]+$ hoặc ^\w+$ (với re.ASCII) |
| Alphanumeric + _ (Unicode) | ^\w+$ (mặc định Python 3) |
| Chỉ Alphanumeric (không _) | ^[a-zA-Z0-9]+$ |
| Chỉ Alphanumeric Unicode | ^[\p{L}\p{N}]+$ (cần module regex) |