正则表达式用于检查a-z,A-Z,0-9, - ,_,但不超过5个数字

时间:2014-11-20 14:01:23

标签: php regex

有人能告诉我正则表达式的语法是什么,只允许以下字符:

a-z 
A-Z
0-9
dash
underscore

此外,该字符串不能包含超过5个数字。

提前感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

你需要的正则表达式是

^[a-zA-Z0-9_-]{0,5}$

它匹配最多五个字符的任意字符组合。

答案 1 :(得分:0)

几种可能性:

~\A(?:[a-z_-]*[0-9]){0,5}[a-z_-]*\z(?<=.)~i

~\A(?!(?:.*[0-9]){6})[\w-]+\z~

这两种模式假定不允许使用空字符串。

第一种模式:

~                        # pattern delimiter
\A                       # anchor for the start of the string
(?:[a-z_-]*[0-9]){0,5}   # repeat this group between 0 or 5 times (so 5 digits max)
[a-z_-]*                 # zero or more allowed characters
\z                       # end of the string
(?<=.)                   # lookbehind that checks there is at least one character
~
i                        # make the pattern case insensitive

第二种模式:

~
\A
(?!                  # negative lookahead that checks there is not
    (?:.*[0-9]){6}   # 6 digits in the string
)  
[\w-]+
\z
~