我有一个模型字段,我希望用户只输入字母数字字符。 我设置了正则表达式:
validators.RegexValidator(r'^[\w]+$'
它还需_
,但我只想aplha numeric characters
而不是_
。
什么可能是它的正则表达式?
答案 0 :(得分:2)
我们通常使用一个简单的[A-Za-z0-9]
正则表达式,它基本上是\w
但没有下划线(假设您没有设置任何特定的语言环境或unicode标志):
\w
如果未指定
LOCALE
和UNICODE
标志,则匹配任何标志 字母数字字符和下划线; 这相当于 设置[a-zA-Z0-9_]
。使用LOCALE
,它将匹配集合[0-9_]
加上 任何字符都被定义为当前的字母数字 语言环境。如果设置了UNICODE
,则会匹配字符[0-9_]
加上 在Unicode字符中被分类为字母数字的任何内容 属性数据库。
另请参阅Regular Expressions: How to Express \w Without Underscore了解其他选项。
答案 1 :(得分:2)
要禁止使用_
的{{1}},您可以在negated character class中使用相反的班级\w
(非单词速记字符类)并通过将\W
添加到否定字符类中来排除_
:
r'^[^\W_]+$'
^^^^
此模式匹配字符串的开头(^
),非字字符以外的一个或多个字符(=匹配所有字符字符)而不是_
(所有这些都是{{} 1}}但不包括\w
),然后是字符串的结尾。
或者(如果您只使用ASCII)只需使用
_
r'(?i)^[a-z0-9]+$'
= \w
没有[a-zA-Z0-9_]
标记。
由于不区分大小写的内联修饰符re.UNICODE
,(?i)^[a-z0-9]+$
会匹配小写和大写ASCII字母。
答案 2 :(得分:0)
您可以使用此正则表达式:
[A-Za-z0-9]+
如果你不想要大写避免A-Z