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

时间:2019-06-03 19:41:30

标签: c# regex validation

最少需要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

2 个答案:

答案 0 :(得分:1)

您的模式以匹配的[a-zA-Z]开始。如果不需要a-zA-Z应该在开始时,但在整个比赛中至少应出现1次(如果支持),则可以使用正向先行声明6-100的长度。

然后,您可以确保至少匹配a-z或A-Z时间或左右两次匹配0+次[a-zA-Z0-9_@!-]*之间的特殊字符:

^(?=.{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

答案 1 :(得分:0)

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

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

第一个字符是必填字符,其余符号的长度为5到99。

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