只需要字母数字(没有纯数字或字母)并且只限制10个字符的正则表达式?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了只需要字母数字(没有纯数字或字母)并且只限制10个字符的正则表达式?相关的知识,希望对你有一定的参考价值。
我遇到过这个问题,在过去的问题中找不到。
标准:
- 拒绝纯数字
- 拒绝纯字母
- 拒绝任何符号
- 仅接受字母数字组合
- 必须等于总共10个字符
以下是我所做的以及每个问题:
^(?!^\d*$)[a-zA-Z\d]10$
这标准#2失败^[a-zA-Z0-9]10$
这标准#1失败
我已经尝试了其他一些符合所有标准但未达到10个字符限制的其他标准。
任何帮助表示赞赏。
答案
您可以使用第二个前瞻:
^(?!\d+$)(?![a-zA-Z]+$)[a-zA-Z\d]10$
细节
^
- 字符串的开头(?!\d+$)
- 负向前瞻,确保整个字符串不仅仅由数字组成(?![a-zA-Z]+$)
- 整个字符串不能全是字母[a-zA-Z\d]10
- 10个字母或数字$
- 字符串的结尾。
另一答案
试试这个:
(?=^.10$)^([a-z]+\d[a-z0-9]*|\d+[a-z][a-z0-9]*)$
Explanation:
(?=^.10$)^([a-z]+\d[a-z0-9]*|\d+[a-z][a-z0-9]*)$
(?=^.10$) # there's exactly 10 characters following
^( | )$ # we match the entire string, containing either:
[a-z]+\d[a-z0-9]* # letters, followed by a number, followed by alphanumerics, or
\d+[a-z][a-z0-9]* # numbers, followed by a letter, followed by alphanumerics
另一答案
使用预测来查找所需的每种类型的至少一个字符,并在正则表达式的“常规”部分中指定长度和字符串限制:
^(?=.*[a-zA-Z])(?=.*\d)[0-9a-zA-Z]10$
(?=.*[a-zA-Z])
-向前看,找一封信,(?=.*\d)
- 向前看并找到一个数字[0-9a-zA-Z]10
- 正好10个数字/字母字符
以上是关于只需要字母数字(没有纯数字或字母)并且只限制10个字符的正则表达式?的主要内容,如果未能解决你的问题,请参考以下文章
R REGEX匹配-至少1个小写字母,1个数字,并且没有8个长度的特殊字符[重复]