Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Cách viết Regex validate số (number validation) trong Python

Validate số bằng regex tùy vào yêu cầu: số nguyên dương, số thực, độ dài cố định, range giá trị...

1. Validate số chính xác (Exact match)

import re

# Chỉ khớp chính xác '2018'
pattern = r'\b2018\b'
print(re.match(pattern, '2018').group())  # 2018
print(re.match(pattern, '20181'))         # None (word boundary)

2. Validate số nguyên dương 5 chữ số (10000 - 99999)


# (?8} -> {m.group() if m else "Invalid"}')

Kết quả


    2346 -> Invalid (chỉ 4 chữ số)
   56789 -> 56789
   01234 -> Invalid (dẫn 0)
  -12345 -> Invalid (âm)
  123456 -> Invalid (6 chữ số)

3. Các pattern validate phổ biến

Loại sốRegex PatternVí dụ hợp lệ
Số nguyên dương^[1-9]\d*$1, 42, 1000
Số nguyên (có âm)^-?[1-9]\d*$|^0$-5, 0, 100
Số thực (có dấu)^[+-]?(\d+\.\d*|\.\d+|\d+)([eE][+-]?\d+)?$3.14, -.5, 1e-3
Số tiền (2 decimals)^\d+(\.\d{2})?$100, 99.99
Percentage 0-100^(100|[1-9]?\d)(\.\d+)?$50, 99.5, 100
IPv4 octet^(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)$0-255

4. Validate bằng Python (không regex) - Thường tốt hơn


def is_positive_int(s):
    try:
        return int(s) > 0 and str(int(s)) == s  # không dẫn 0
    except ValueError:
        return False

def is_float_in_range(s, min_v, max_v):
    try:
        v = float(s)
        return min_v <= v <= max_v
    except ValueError:
        return False

Khuyến nghị: Dùng try/except float/int cho validation logic, regex chỉ cho format validation đơn giản.