只需要字母数字(没有纯数字或字母)并且只限制10个字符的正则表达式?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了只需要字母数字(没有纯数字或字母)并且只限制10个字符的正则表达式?相关的知识,希望对你有一定的参考价值。

我遇到过这个问题,在过去的问题中找不到。

标准:

  1. 拒绝纯数字
  2. 拒绝纯字母
  3. 拒绝任何符号
  4. 仅接受字母数字组合
  5. 必须等于总共10个字符

以下是我所做的以及每个问题:

  1. ^(?!^\d*$)[a-zA-Z\d]10$ 这标准#2失败
  2. ^[a-zA-Z0-9]10$ 这标准#1失败

我已经尝试了其他一些符合所有标准但未达到10个字符限制的其他标准。

任何帮助表示赞赏。

答案

您可以使用第二个前瞻:

^(?!\d+$)(?![a-zA-Z]+$)[a-zA-Z\d]10$

查看regex demoRegulex graph

enter image description here

细节

  • ^ - 字符串的开头
  • (?!\d+$) - 负向前瞻,确保整个字符串不仅仅由数字组成
  • (?![a-zA-Z]+$) - 整个字符串不能全是字母
  • [a-zA-Z\d]10 - 10个字母或数字
  • $ - 字符串的结尾。
另一答案

试试这个:

(?=^.10$)^([a-z]+\d[a-z0-9]*|\d+[a-z][a-z0-9]*)$

Demo

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个字符的正则表达式?的主要内容,如果未能解决你的问题,请参考以下文章

如何限定TEDIT只能输入数字或汉字或字母

R REGEX匹配-至少1个小写字母,1个数字,并且没有8个长度的特殊字符[重复]

验证文本框只允许数字,没有特殊字符或字母[重复]

只需要一个正则表达式来检查字符串中的“2 个字母和 4 个数字”

如何过滤让输入框 只输入字母和数字

有没有办法只接受字母而不是数字?如果给出数字,它应该显示验证错误,因为它只需要字母