正则表达式允许字母数字,但不仅仅是数字,最少 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 正则表达式验证表达式,仅允许使用字母数字值并需要一个数字