2014-06-08 53 views
1

我想允許這些字符[a-z]+\.+[0-9]*\_*(必須包含一個或多個小寫字母字符(az)並且必須包含一個或多個句點(。)也可以包含零個或多個數字( 0-9),零個或多個下劃線(_)),但沒有其他的。使用Python 3.4進行輸入驗證:只能包含

我已經嘗試了多種方法都沒有成功:

import re 
iStrings = str(input('Enter string? ')) 
iMatch = re.findall(r'[a-z]+\.+[0-9]*\_*', iStrings) 
iiMatch = re.findall(r'[~`[email protected]$%^&*()-+={}\[]|\;:\'"<,>.?/]', iStrings) 
iiiMatch = iMatch != iiMatch 
if iiiMatch: 
    print(':)') 
else: 
    print(':(') 

又如:

import re 
iStrings = str(input('Enter string? ')) 
iMatch = re.findall(r'[a-z]+\.+[0-9]*\_*', iStrings) not "[~`[email protected]$%^&*()-+={}\[]|\;:\'"<,>.?/]" in iStrings 
if iMatch: 
    print(':)') 
else: 
    print(':(') 

任何幫助將非常感激。

編輯:補充說明。

編輯:欲瞭解更多信息:https://forums.uberent.com/threads/beta-mod-changes.51520/page-8#post-939265

+0

FYI添加了Python代碼的答案。 – zx81

+0

對於一個更廣義的輸入驗證(這個問題是一個簡化的例子),看看一些(的_many_)密碼validatiuon問題和答案:例如[正則表達式的密碼](http://stackoverflow.com/a/9611715/433790) – ridgerunner

+0

@ridgerunner不錯的鏈接:) – zx81

回答

1
allow these characters [a-z]+\.+[0-9]*\_* 

首先,[a-z]+不是 「一」 字。 [0-9]*也不是\_*

我假設你的意思是你要允許字母,數字,下劃線,點,加號和星號。

試試這個:

^[\w*.+]+$ 
  1. \w已經匹配[a-z][0-9]_
  2. ^$確保沒有別的是允許的。
  3. 從你的問題我不清楚,如果你想允許一個+字符匹配。如果沒有,請從字符類中刪除它:^[\w*.]+$。同樣,如果不需要,則刪除*

在代碼:

if re.search(r"^[\w*.+]+$", subject): 
    # Successful match 
else: 
    # Match attempt failed 

編輯您的評論如下:

對於必須包含一個或多個字母,以及一個或多個點,以及零個或多個_,和零字符串或更多的數字,我們需要前瞻來強制執行one or more條件。你可以使用這個:

^(?=.*[a-z])(?=.*\.)[\w_.]+$

+0

對不起,還不清楚。小寫字符'[a-z]'一個或多個,一個或多個'.',零個或多個'_'和零個['0-9]'。這是我第一次使用正則表達式,人是混亂。謝謝。 –

+0

@ loki_999感謝您的反饋。您是否在說表達式必須包含一個或多個字母,AND一個或多個點,AND零個或多個_,以及零個或多個數字?那麼這是一個不同的正則表達式'^(?=。* [a-z])(?=。* \。)[\ w_。] + $'(我們需要使用lookahead進行驗證) – zx81

+0

準確。 https://forums.uberent.com/threads/beta-mod-changes.51520/page-8#post-939265 –