繁体   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