正则表达式允许字母数字,但不仅仅是数字,最少 6 个字符,最多 100 个字符

Posted

技术标签:

【中文标题】正则表达式允许字母数字,但不仅仅是数字,最少 6 个字符,最多 100 个字符【英文标题】:Regex to allow alpha numeric but not just numeric with minimum 6 characters and max 100 【发布时间】:2019-10-19 09:02:53 【问题描述】:

最少需要 6 个字符,最多需要 100 个字符。

不允许所有数字 -111111 允许使用字母数字 - abc123 允许使用特殊字符 -_@! 只允许字母 - abcdefgh

AAAAAA =>OK
111111=> NOT OK
AAA123!=>OK
AAA12 => NOT ok minimum 6 characters 
11111_ =>OK

我尝试使用此正则表达式 ^[a-zA-Z][a-zA-Z0-9]*$.. 它可以工作,但我无法获得最小 6 或最大 100。

^[a-zA-Z][a-zA-Z0-9]*$

不允许所有数字 -111111 允许使用字母数字 - abc123 允许使用特殊字符 -_@! 只允许字母 - abcdefgh

【问题讨论】:

未指定。 12343a 是否允许?是否允许 @12345 - 12345@ 怎么样 - 为什么是正则表达式? "[^0-9]" 用于正则表达式,.Length >= 6 用于检查长度? 我可以检查 .length 但我希望所有内容都在正则表达式中 【参考方案1】:

您的模式以匹配 [a-zA-Z] 开头。如果不要求 a-zA-Z 应该在开始但在整个匹配中至少 1 次,如果支持,您可以使用正向前瞻来断言 6 - 100 的长度。

那么您可以确保在左侧和右侧匹配 0+ 次 [a-zA-Z0-9_@!-]* 之间至少匹配 1 次 a-z 或 A-Z 或特殊字符:

^(?=.6,100$)[a-zA-Z0-9_@!-]*[a-zA-Z_@!-][a-zA-Z0-9_@!-]*$
^ 字符串开始 (?=.6,100$) 断言右边是 6 - 100 个字符,换行符除外 [a-zA-Z0-9_@!-]* 匹配字符类中列出的 0+ 次 [a-zA-Z_@!-] 匹配字符 a-z 或 A-Z 或不带数字的特殊字符 [a-zA-Z0-9_@!-]*匹配字符类中所列内容的 0+ 倍 $断言字符串结束

Regex demo

另一个选项是正负前瞻,1 检查长度,另一个 (?!\d+$) 检查匹配是否仅包含数字:

^(?=.6,100$)(?!\d+$)[a-zA-Z0-9_@!-]+$

Regex demo

【讨论】:

这不允许 11111_ =>OK @user4379225 你是这个意思吗? regex101.com/r/q1JLmc/2我已经更新了答案。【参考方案2】:

您可以定义一个范围来帮助您满足长度要求。

^[a-zA-Z][\w\d!_\-@]5,99$

第一个字符是强制性的,其余符号的长度为 5 到 99。

正如 Artner 先生所说,您可以详细说明您的需求,以便我们提供更好的答案。

【讨论】:

以上是关于正则表达式允许字母数字,但不仅仅是数字,最少 6 个字符,最多 100 个字符的主要内容,如果未能解决你的问题,请参考以下文章

java正则表达式 过滤特殊字符 只允许中文、字母和数字, 该怎么写?急。。。

密码需要 Flex 正则表达式验证表达式,仅允许使用字母数字值并需要一个数字

正则表达式:要么只有数字或字母数字带' - '和'_'允许但不带数字' - '和' - '

允许字母数字、-、_ 和空格的正则表达式

PHP正则匹配6到16位字符组合(且只能为数字字母下划线)

PHP - 正则表达式只允许字母和数字