簡體   English   中英

PHP 4個字符的正則表達式

[英]php regular expression for 4 characters

我正在嘗試為一個字符串構造一個正則表達式,該字符串可以具有0到4個字符。 字符只能是0到9或a到z或A到Z。

我有以下表達式,它可以工作,但是我不知道如何設置它,這樣最多只能接受4個字符。 在該表達式中,接受0到與模式匹配的無窮大字符。

'([0-9a-zA-Z\s]*)'

您可以使用{0,4}代替* ,這將允許零至四個上述標記的實例:

'([0-9a-zA-Z\s]{0,4})'

*實際上與{0,}相同,即至少為零且無界。)

您可以使用{ }指定有限量詞:

[0-9a-zA-Z\s]{0,4}

http://www.regular-expressions.info/reference.html

如果要匹配一個完全由零到四個這些字符組成的字符串,則需要在兩端固定正則表達式:

'(^[0-9a-zA-Z]{0,4}$)'

我隨意刪除\\s因為它不適合您的問題描述。 另外,我不知道您是否知道這一點,但是這些括號不會形成一個組,無法捕獲。 它們甚至都不是正則表達式的一部分。 PHP將它們用作正則表達式分隔符。 您的正則表達式等效於:

'/^[0-9a-zA-Z]{0,4}$/'

如果您確實要捕獲組#1中的整個匹配項,則應在定界符添加括號:

'/(^[0-9a-zA-Z]{0,4}$)/'

...但是我不明白你為什么要這么做; 整個比賽總是自動在#0組中進行。

您可以完全避免使用正則表達式。

if (strlen($str) <= 4 && ctype_alnum($str)) {
   // contains 0-4 characters, that are either letters or digits
}

ctype_alnum()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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