[英]Python3, re.match with list
我讀了這個: https : //stackoverflow.com/a/17090205/6426449
我列出了無法在django中的用戶名上使用的列表。
列表 : FORBIDDEN_USERNAME_LIST = ['admin', 'master', 'owner']
所以我做了這樣的代碼:
views.py
def username_choice(request):
if request.method == "POST":
username = request.POST['username']
for item in forbidden.FORBIDDEN_USERNAME_LIST:
match = re.search("r'\b"+item+"\b'", username)
if match:
return JsonResponse({'result': item + 'banned username'})
但是看來這行不通。
也許我認為, match = re.search("r'\\b"+item+"\\b'", username)
這是問題。
我該如何解決?
您可以簡單地in
使用:
forbidden = ['admin', 'master', 'owner']
username = request.POST['username']
match = [nm for nm in forbidden if nm in username]
if match:
# part of the username is in the forbidden list.
IPython中的示例:
In [1]: forbidden = ['admin', 'master', 'owner']
In [2]: username = 'owner123'
In [3]: match = [nm for nm in forbidden if nm in username]
In [4]: match
Out[4]: ['owner']
def username_choice(request):
if request.method == "POST":
username = request.POST['username']
for item in forbidden.FORBIDDEN_USERNAME_LIST:
if re.search(r'\b'+str(item)+'\\b', username, re.I):
return JsonResponse({'result': item + 'banned username'})
只需使用以下語句:
match = re.search(r'[%s]+' % item, username, re.I)
代替這個:
match = re.search("r'\b"+item+"\b'", username)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.