python re for validation string

时间:2017-07-18 05:45:43

标签: python regex

以下是代码:

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"

上面的代码正在打印“pass”

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

以下是几个例子:

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

3 个答案:

答案 0 :(得分:5)

你可以试试这个:

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

Demo

答案 1 :(得分:3)

请注意,regexp中的+表示"一个或多个"。如果你想要一个确切数量的字符(例如" 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 :(得分:2)

您只需在常规快递字符串

之间删除+即可 正则表达式中的

+表示前面一个表达式中的一个或多个