2017-08-07 54 views
1

直到现在,当用户在我的应用程序中注册时,他无法创建具有特殊字符的用户名。我不喜欢这样写道:筛选一些特殊字符

if username.isalnum() is False: 
.... 

但现在我希望能够像的特殊字符列表:! - _ $

什么是正确的做法?

+0

你想要它们被替换或只是删除? – Veltro

+0

我只想检测它们。如果特殊字符不在列表中,它将返回一条消息,告诉该字符不受支持。 – GrandGTO

回答

1

这段代码将打印坏字符

username = 'test343!_$&^ffg' 
character_allowed = ['!', '_', '-', '$'] 
for letter in username: 
    if not (letter.isalpha() or letter.isdigit() or letter in character_allowed): 
     print letter 
+0

非常感谢,这就是我想要的! – GrandGTO

0

如果使用了错误的字符并将其删除,此代码将会发出警报。

a = "username$" 
b = "! - _ $" #can be a string, list or set 

#alert if bad chars 
for c in b: 
    if c in a: 
     print c + " is a bad character" 
     break 

#short alert code 
if any((c in a) for c in b): print c + " is a bad character" 

#remove bad chars 
for c in b: a=a.replace(c,"") 

print a 
+0

我不认为它会起作用。例如,我允许字符“$”。如果我输入用户名“MyUsername_ $”,如何检测“_”是一个不好的字符,$是正常的。 – GrandGTO

+0

$是不正常的,因为你之前写过,这段代码正在工作,试试吧。 @GrandGTO – Veltro

+0

在你的例子中,我把坏字符放在列表/变量上。但我想把正确的性格放在一个列表中。 – GrandGTO

0

一个无效字符不是字母数字and它不是在允许的特殊字符。

name = '[email protected]' 
valid_chars = set('! - _ $') 

for char in name: 
    if not char.isalnum() and char not in valid_chars: 
     print(char, 'is invalid.') 
     break