Python 如何验证字符串仅包含字母、数字、下划线和破折号
在本文中,我们将了解如何在Python中验证字符串只包含字母、数字、下划线和破折号。
第一种策略是使用正则表达式。要使用re库,需要导入并安装它(如果尚未安装)。我们在导入re库后使用正则表达式” ^[A-Za-z0-9_-]*$ “。
如果字符串包含除字母和数字以外的任何特殊字符,则返回False;否则,将返回True。
示例1
在下面给出的示例中,我们接受一个字符串作为输入,并使用正则表达式来检查它是否仅包含字母、数字、下划线和破折号。
import re
str1 = "Tutorialspoint123__"
print("The given string is:")
print(str1)
print("Checking if it contains only letters, numbers, underscores, and dashes")
res = bool(re.match("^[A-Za-z0-9_-]*$", str1))
print(res)
输出
上述示例的输出如下所示 −
The given string is:
Tutorialspoint123__
Checking if it contains only letters, numbers, underscores, and dashes
True
示例2
在下面给出的示例中,我们使用与上面相同的程序,并且我们使用另一个字符串作为输入。 −
import re
str1 = "Tutorialspoint@123"
print("The given string is:")
print(str1)
print("Checking if it contains only letters, numbers, underscores, and dashes")
res = bool(re.match("^[A-Za-z0-9_-]*$", str1))
print(res)
输出
上面示例的输出如下所示:
The given string is:
Tutorialspoint@123
Checking if it contains only letters, numbers, underscores, and dashes
False
使用set
第二种方法是使用 set。我们将声明一个包含所有可接受字符的集合,然后检查输入字符串是否是可接受字符的子集,如果是子集,则打印 True,否则打印 False。
示例1
在下面的示例中,我们输入一个字符串,并使用 set 检查它是否只包含字母、数字、下划线和破折号。
acceptable_chars = set('0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_-')
str1 = "Tutorialspoint123__"
print("The given string is")
print(str1)
validation = set(str1)
print("Checking if it contains only letters, numbers, underscores, and dashes")
if validation.issubset(acceptable_chars):
print(True)
else:
print(False)
输出
以上示例的输出如下所示:
The given string is
Tutorialspoint123__
Checking if it contains only letters, numbers, underscores, and dashes
True
示例2
在下面给出的示例中,我们将使用与上述相同的程序,并将另一个字符串作为输入-
acceptable_chars = set('0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_-')
str1 = "Tutorialspoint@123"
print("The given string is")
print(str1)
validation = set(str1)
print("Checking if it contains only letters, numbers, underscores, and dashes")
if validation.issubset(acceptable_chars):
print(True)
else:
print(False)
输出
上面示例的输出如下所示 –
The given string is
Tutorialspoint@123
Checking if it contains only letters, numbers, underscores, and dashes
False