📌  相关文章
📜  用于验证字符串是否仅包含字母、数字、下划线和破折号的Python程序

📅  最后修改于: 2022-05-13 01:55:12.835000             🧑  作者: Mango

用于验证字符串是否仅包含字母、数字、下划线和破折号的Python程序

先决条件: Python中的正则表达式

给定一个字符串,我们必须找出该字符串是否包含任何字母、数字、下划线和破折号。它通常用于验证用户名和密码的有效性。例如,用户有一个人的用户名字符串,并且用户不希望用户名包含任何特殊字符,例如 @、$ 等。

让我们看看解决此任务的不同方法:

方法一:使用正则表达式。

正则表达式库 ( re ) 中有一个函数可以为我们比较两个字符串。 re.match(pattern, 字符串)是一个返回对象的函数,要查找是否找到匹配项,我们必须将其类型转换为布尔值。

让我们看一个例子:

示例 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。

让我们看一个例子:
示例 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