我正在尝试为用户名创建一个验证函数。它必须是:
我想出了一个正则表达式:
^([A-Za-z]+-?[A-Za-z0-9]{4,14}[A-Za-z0-9])$
除了最大字符数之外,它什么都做。我错过了什么
您可能想知道我为什么使用4到14:这是因为第一个和最后一个字符已经由其他条件定义,所以我需要剩余的字符至少为4(使其成为6个字符),最多为14个字符(使其成为16个字符)
这是Python中的一个简单验证函数:
# Username validation
import re
def validate(username):
regex = re.compile('^([A-Za-z]+-?[A-Za-z0-9]{4,14}[A-Za-z0-9])$', re.I)
match = regex.match(str(username))
return bool(match)
print(validate("PeterParker")) #Valid username
print(validate("Peter-Parker")) #Valid username
print(validate("Peter-P-arker")) #Invalid username
print(validate("Peter")) #Invalid username
print(validate("PeterParker-")) #Invalid username
print(validate("-PeterParker")) #Invalid username
print(validate("1PeterParker")) #Invalid username
print(validate("Peter Parker")) #Invalid username
print(validate("PeterParkerSpiderMan")) #Invalid username
非常感谢你的建议
我用循环来构建整个催眠和字母组合,相当野蛮。我想说使用长度签入代码要干净得多。如果需要表达式,可以在编译之前打印它
输出
试试
(?i)^(?=[a-z].{5,15}$)[a-z0-9]*-?[a-z0-9]+$
只需要在断言中验证长度
demo
相关问题 更多 >
编程相关推荐