簡體   English   中英

django正則表達式僅匹配字母數字而不是下划線

[英]django regular expression only to match alphanumeric not underscore

我有一個模型字段,我只希望用戶輸入字母數字字符。 我將正則表達式設置為:

validators.RegexValidator(r'^[\w]+$'

它也需要_但我只想接受aplha numeric characters而不要_ 正則表達式可能是什么?

我們通常使用簡單的[A-Za-z0-9]正則表達式,其本質上是\\w但沒有下划線(假設您未設置任何特定的語言環境或unicode標志):

\\w

如果未指定LOCALEUNICODE標志,則匹配任何字母數字字符和下划線; 這等效於集合[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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM