2017-07-18 28 views
4

下面是代码:蟒蛇重新进行验证字符串

import re 
string = "02:222222" 
if re.match(r'[a-fA-F0-9]+[a-fA-F0-9]+:+[a-fA-F0-9]+[a-fA-F0-9]+$',string): 
    print "pass" 
else: 
    print "fail" 

上面的代码打印“合格”

我的期望输出应该是“失败”

下面是几个例子:

string = 00:20 
expected output: pass 
string = 00:202 
expected ouput: fail 
string = 00:2z 
expected output: fail 
string = 000:2 
expected ouput: fail 
+0

你期望匹配什么?解释匹配输入的结构。你的例子太狭窄了。它是两位数,后跟冒号后跟两位数? – DyZ

回答

5

您可以试试这个:

^[a-fA-F0-9]{2}:[a-fA-F0-9]{2}$ 

Demo

3

注意,在正则表达式的意思是 “一个或多个” +。如果你想字符的准确数字(如 “XX:XX”),那么你应该删除 “+” - ES:

r'[a-fA-F0-9][a-fA-F0-9]:[a-fA-F0-9][a-fA-F0-9]$' 

,或者更好:

r'([a-fA-F0-9][a-fA-F0-9]):([a-fA-F0-9][a-fA-F0-9])$' 

得到$1$2正则表达式的组件。

this,你也可以使用:

^[a-fA-F0-9]{2}:[a-fA-F0-9]{2}$ 

甚至更​​多compact

^[^\W_]{2}:[^\W_]{2}$ 
2

您可以在正则表达式的正规快件串

+之间只需删除+指前述表达式

中的一个或多个