[英]django regular expression only to match alphanumeric not underscore
我有一個模型字段,我只希望用戶輸入字母數字字符。 我將正則表達式設置為:
validators.RegexValidator(r'^[\w]+$'
它也需要_
但我只想接受aplha numeric characters
而不要_
。 正則表達式可能是什么?
我們通常使用簡單的[A-Za-z0-9]
正則表達式,其本質上是\\w
但沒有下划線(假設您未設置任何特定的語言環境或unicode標志):
\\w
如果未指定
LOCALE
和UNICODE
標志,則匹配任何字母數字字符和下划線; 這等效於集合[a-zA-Z0-9_]
。 使用LOCALE
,它將匹配集合[0-9_]
以及當前語言環境定義為字母數字的任何字符。 如果設置了UNICODE
,它將匹配字符[0-9_]
以及Unicode字符屬性數據庫中分類為字母數字的任何字符。
另請參見正則表達式:如何在沒有下划線的情況下表達\\ w 。
要用\\w
禁止_
,可以在否定的字符類中使用相反的類\\W
( 非單詞速記字符類 ),並通過將_
添加到否定的字符類中來排除_
:
r'^[^\W_]+$'
^^^^
此模式匹配字符串( ^
)的開頭,非單詞chars(=匹配所有單詞chars)和_
(因此所有\\w
但不包括_
所有字符)之外的一個或多個字符,然后匹配串。
或者(如果您僅使用ASCII),只需使用
r'(?i)^[a-z0-9]+$'
由於\\w
= [a-zA-Z0-9_]
而沒有re.UNICODE
標志。
由於不區分大小寫的內聯修飾符(?i)
, (?i)^[a-z0-9]+$
匹配大小寫的ASCII字母。
您可以使用此正則表達式:
[A-Za-z0-9]+
如果您不希望大寫,請避免AZ
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.