用于验证字符串是否仅包含字母、数字、下划线和破折号的Python程序
先决条件: Python中的正则表达式
给定一个字符串,我们必须找出该字符串是否包含任何字母、数字、下划线和破折号。它通常用于验证用户名和密码的有效性。例如,用户有一个人的用户名字符串,并且用户不希望用户名包含任何特殊字符,例如 @、$ 等。
让我们看看解决此任务的不同方法:
方法一:使用正则表达式。
正则表达式库 ( re ) 中有一个函数可以为我们比较两个字符串。 re.match(pattern, 字符串)是一个返回对象的函数,要查找是否找到匹配项,我们必须将其类型转换为布尔值。
Syntax: re.match(pattern, string)
Parameters:
- pattern: the pattern against which you want to check
- string: the string you want to check for the pattern
Return: Match object
让我们看一个例子:
示例 1:
Python3
# import library
import re
# make a pattern
pattern = "^[A-Za-z0-9_-]*$"
# input
string = "G33ks_F0r_Geeks"
# convert match object
# into boolean values
state = bool(re.match(pattern, string))
print(state)
Python3
# import library
import re
print(bool(re.match("^[A-Za-z0-9_-]*$",
'ValidString12-_')))
print(bool(re.match("^[A-Za-z0-9_-]*$",
'inv@lidstring')))
Python3
# create a set of allowed characters
allowed_chars = set(("0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_-"))
# input string
string = "inv@lid"
# convert string into set of characters
validation = set((string))
# check condition
if validation.issubset(allowed_chars):
print("True")
else:
print ("False")
Python3
allowed_chars = set("0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_-")
string = "__Val1d__"
validation = set((string))
if validation.issubset(allowed_chars):
print("True")
else:
print ("False")
输出:
True
示例 2:
Python3
# import library
import re
print(bool(re.match("^[A-Za-z0-9_-]*$",
'ValidString12-_')))
print(bool(re.match("^[A-Za-z0-9_-]*$",
'inv@lidstring')))
输出:
True
False
方法二:使用集合。
Set 是Python中的内置数据类型。我们正在使用 子集() 如果集合的所有字符都存在于给定集合中,则返回 True 的集合函数,否则返回 False。
Syntax: set_name.issubset(set)
Parameters:
- set: Represents that set in which the subset has to be searched
Return: boolean value
让我们看一个例子:
示例 1:
Python3
# create a set of allowed characters
allowed_chars = set(("0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_-"))
# input string
string = "inv@lid"
# convert string into set of characters
validation = set((string))
# check condition
if validation.issubset(allowed_chars):
print("True")
else:
print ("False")
输出:
False
示例 2:
Python3
allowed_chars = set("0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_-")
string = "__Val1d__"
validation = set((string))
if validation.issubset(allowed_chars):
print("True")
else:
print ("False")
输出:
True