Article Categories
- All Categories
-
Data Structure
-
Networking
-
RDBMS
-
Operating System
-
Java
-
MS Excel
-
iOS
-
HTML
-
CSS
-
Android
-
Python
-
C Programming
-
C++
-
C#
-
MongoDB
-
MySQL
-
Javascript
-
PHP
-
Economics & Finance
How to write a Python Regular Expression to validate numbers?
Regular expressions provide powerful pattern matching for validating different number formats in Python. The re module offers functions like re.match() to check if strings conform to numeric patterns.
There are several common approaches to validate numbers using regular expressions ?
Validate Integer Numbers
To validate integers, we use the pattern ^[+-]?\d+$ which matches optional sign followed by one or more digits ?
import re
# Test different integer values
numbers = ["123", "-456", "+789", "123abc", ""]
# Regex pattern for integers
pattern = r"^[+-]?\d+$"
def validate_integer(text):
return bool(re.match(pattern, str(text)))
# Test each number
for num in numbers:
result = validate_integer(num)
print(f"'{num}' is valid integer: {result}")
'123' is valid integer: True '-456' is valid integer: True '+789' is valid integer: True '123abc' is valid integer: False '' is valid integer: False
Pattern Breakdown
-
^− Start of string -
[+-]?− Optional plus or minus sign -
\d+− One or more digits -
$− End of string
Validate Real Numbers (Decimals)
For decimal numbers, the pattern ^[+-]?\d+(\.\d+)?$ allows optional decimal places ?
import re
# Test different decimal values
numbers = ["3.14", "-2.71", "123", "123.", ".456", "abc"]
# Regex pattern for real numbers
pattern = r"^[+-]?\d+(\.\d+)?$"
def validate_real_number(text):
return bool(re.match(pattern, str(text)))
# Test each number
for num in numbers:
result = validate_real_number(num)
print(f"'{num}' is valid real number: {result}")
'3.14' is valid real number: True '-2.71' is valid real number: True '123' is valid real number: True '123.' is valid real number: False '.456' is valid real number: False 'abc' is valid real number: False
Pattern Breakdown
-
^[+-]?\d+− Optional sign and digits -
(\.\d+)?− Optional decimal point with digits
Validate Comma-Separated Numbers
For numbers with comma separators (like 1,234.56), we use a more complex pattern ?
import re
# Test comma-separated numbers
numbers = ["1,234.56", "5,678", "-2,345.78", "1,23", "12,34", "1234"]
# Regex pattern for comma-separated numbers
pattern = r"^[+-]?(\d{1,3}(,\d{3})*|\d+)(\.\d+)?$"
def validate_comma_number(text):
return bool(re.match(pattern, str(text)))
# Test each number
for num in numbers:
result = validate_comma_number(num)
print(f"'{num}' is valid comma number: {result}")
'1,234.56' is valid comma number: True '5,678' is valid comma number: True '-2,345.78' is valid comma number: True '1,23' is valid comma number: False '12,34' is valid comma number: False '1234' is valid comma number: True
Pattern Breakdown
-
\d{1,3}− 1-3 digits at start -
(,\d{3})*− Zero or more groups of comma + 3 digits -
|\d+− OR any sequence of digits (no commas)
Comparison Summary
| Number Type | Pattern | Example Valid | Example Invalid |
|---|---|---|---|
| Integer | ^[+-]?\d+$ |
123, -456 | 12.3, abc |
| Real/Decimal | ^[+-]?\d+(\.\d+)?$ |
3.14, -2.5 | 123., .456 |
| Comma-Separated | ^[+-]?(\d{1,3}(,\d{3})*|\d+)(\.\d+)?$ |
1,234.56 | 12,34 |
Conclusion
Regular expressions provide flexible number validation in Python. Use ^[+-]?\d+$ for integers, ^[+-]?\d+(\.\d+)?$ for decimals, and more complex patterns for formatted numbers like comma-separated values.
