如何编写一个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中使用正则表达式来验证数字。不同的数字类型对应不同的正则表达式,可以根据实际需要进行调整。希望对大家有所帮助。