如何编写一个Python常规表达式以验证数字?

如何编写一个Python常规表达式以验证数字?

在Python中,有时我们需要验证输入的内容是否为数字。这时,就可以用到正则表达式来实现。正则表达式是一种按照某种规则匹配字符串的方法,可以用来实现各种字符串操作,包括验证字符串是否符合指定的格式。

在Python中,使用正则表达式可以使用re模块来实现。下面我们将介绍如何通过编写正则表达式来验证数字。

阅读更多:Python 教程

判断是否为整数

若要验证是否为整数,需要使用正则表达式^\d+$。其中的^表示以什么开始,\d表示数字,+表示出现1次或多次,$表示以什么结束。其中,^$是为了限制整个字符串只能由数字构成。

示例代码:

import re

def is_integer(input_str):
    pattern = r"^\d+$"
    return bool(re.match(pattern, input_str))

print(is_integer("123"))  # True
print(is_integer("-123"))  # False
print(is_integer("1.23"))  # False

判断是否为小数

若要验证是否为小数,需要先判断是否为整数,然后再验证小数点。可以使用正则表达式^[+-]?\d+\.?\d*$。其中^表示以什么开始,[+-]?表示正号或负号可选,\d+表示数字出现1次或多次,\.表示小数点(需要用反斜杠转义),*表示出现0次或多次,$表示以什么结束。

示例代码:

import re

def is_decimal(input_str):
    pattern = r"^[+-]?\d+\.?\d*$"
    return bool(re.match(pattern, input_str))

print(is_decimal("1.23"))  # True
print(is_decimal("-1.23"))  # True
print(is_decimal("123"))  # True
print(is_decimal("-1.2.3"))  # False

判断是否为正整数

若要验证是否为正整数,只需要修改判断整数的正则表达式,使用^\d+$即可。和整数验证一样,这里限制了字符串只由数字构成。

示例代码:

import re

def is_positive_integer(input_str):
    pattern = r"^\d+$"
    return bool(re.match(pattern, input_str))

print(is_positive_integer("123"))  # True
print(is_positive_integer("123.0"))  # False
print(is_positive_integer("-123"))  # False

判断是否为负整数

若要验证是否为负整数,需要使用正则表达式^-\d+$。其中^表示以什么开始,-表示负号,\d+表示数字出现1次或多次,$表示以什么结束。

示例代码:

import re

def is_negative_integer(input_str):
    pattern = r"^-\d+$"
    return bool(re.match(pattern, input_str))

print(is_negative_integer("-123"))  # True
print(is_negative_integer("123"))  # False
print(is_negative_integer("-1.23"))  # False

判断是否为正小数

若要验证是否为正小数,需要先判断是否为正实数,然后再判断小数点。可以使用正则表达式^[+]?\d+\.\d+$。其中^表示以什么开始,[+]表示正号可选,\d+表示数字出现1次或多次,\.表示小数点(需要用反斜杠转义),\d+表示小数部分数字出现1次或多次,$表示以什么结束。

示例代码:

import re

def is_positive_decimal(input_str):
    pattern = r"^[+]?\d+\.\d+$"
    return bool(re.match(pattern, input_str))

print(is_positive_decimal("1.23"))  # Trueprint(is_positive_decimal("+1.23"))  # True
print(is_positive_decimal("-1.23"))  # False
print(is_positive_decimal("123"))  # False
print(is_positive_decimal("1.2.3"))  # False

判断是否为负小数

若要验证是否为负小数,需要先判断是否为负实数,然后再验证小数点。可以使用正则表达式^-\d+\.\d+$。其中^表示以什么开始,-表示负号,\d+表示数字出现1次或多次,\.表示小数点(需要用反斜杠转义),\d+表示小数部分数字出现1次或多次,$表示以什么结束。

示例代码:

import re

def is_negative_decimal(input_str):
    pattern = r"^-\d+\.\d+$"
    return bool(re.match(pattern, input_str))

print(is_negative_decimal("-1.23"))  # True
print(is_negative_decimal("+1.23"))  # False
print(is_negative_decimal("123"))  # False
print(is_negative_decimal("-1.2.3"))  # False

判断是否为科学计数法表示的数字

若要验证是否为科学计数法表示的数字,需要使用正则表达式^[+-]?\d*\.?\d+[eE][+-]?\d+$。其中^表示以什么开始,[+-]?表示正号或负号可选,\d*表示0个或多个数字,\.表示小数点(需要用反斜杠转义),\d+表示小数部分数字出现1次或多次,[eE]表示科学计数法的符号,[+-]?表示指数的正号或负号可选,\d+表示指数部分数字出现1次或多次,$表示以什么结束。注:这里的科学计数法指数部分不能包含小数点,若有小数点就不是科学计数法表示了。

示例代码:

import re

def is_scientific_notation(input_str):
    pattern = r"^[+-]?\d*\.?\d+[eE][+-]?\d+$"
    return bool(re.match(pattern, input_str))

print(is_scientific_notation("1.23e-4"))  # True
print(is_scientific_notation("-1.23E+4"))  # True
print(is_scientific_notation("123"))  # False
print(is_scientific_notation("1.2.3E-4"))  # False

结论

本文介绍了如何在Python中使用正则表达式来验证数字。不同的数字类型对应不同的正则表达式,可以根据实际需要进行调整。希望对大家有所帮助。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程