捕获未通过正则表达式验证的字符

时间:2017-05-27 13:50:02

标签: python regex django

在我的Django网站中,我允许使用字母数字和/或包含@ _ . + -的用户名。此外,也允许空格。我已经编写了一个简单的正则表达式来确保这一点:'^[\w\s.@+-]+$'

这可能是一个显而易见的问题,但如何捕获传递正则表达式验证的字符?我想在工具提示中向用户显示这些字符。

2 个答案:

答案 0 :(得分:1)

您可以使用'[^...]'表示法来否定字符集'...'。以下内容将为您提供一组所有不需要的字符:

> name = 'abc%&/()45 -:'
> set(re.findall(r'[^\w\s.@+-]', name))
set(['%', '&', ')', '(', '/', ':'])

答案 1 :(得分:1)

使用方括号内的克拉(例如[^...])使其成为反转。因此,例如,[A-Za-z0-9_]将匹配字母数字和下划线,而[^A-Za-z0-9_]将匹配字母数字或下划线的任何内容。在您的情况下,您似乎想要的正则表达式是r'^[^\w\s\.\@\+\-]+$'