首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >接受字母数字字符(6-10个字符) .NET,C#的正则表达式

接受字母数字字符(6-10个字符) .NET,C#的正则表达式
EN

Stack Overflow用户
提问于 2010-02-03 07:38:59
回答 3查看 23.9K关注 0票数 5

我正在使用C#和.NET构建一个用户注册表单,我需要验证用户输入的密码字段。验证要求如下。

  1. 应该是字母数字(a-z,A-Z,0-9)
  2. 它应该接受6-10个字符(最少6个字符,最多10个字符)
  3. 至少有一个字母和数字(例如:stack1over)

我使用的正则表达式如下所示。

代码语言:javascript
运行
复制
^([a-zA-Z0-9]{6,10})$

它满足我的前两个条件。当我只输入字符或数字时,它会失败。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-02-03 08:22:11

如果可以的话,可以通过多个正则表达式。它会比那些展望未来的怪物清洁得多:-)

代码语言:javascript
运行
复制
^[a-zA-Z0-9]{6,10}$
[a-zA-Z]
[0-9]

虽然有些人可能认为这很聪明,但没有必要用一个正则表达式(有时甚至是任何regex )做任何事情--只要看看那些想要regex来检测75到4093之间数字的人就行了。

您希望看到一些很好的干净代码,如:

代码语言:javascript
运行
复制
if not checkRegex(str,"^[0-9]+$")
    return false
val = string_to_int(str);
return (val >= 75) and (val <= 4093)

或者类似于:

代码语言:javascript
运行
复制
return checkRegex(str,"^7[5-9]$|^[89][0-9]$|^[1-9][0-9][0-9]$|^[1-3][0-9][0-9][0-9]$|^40[0-8][0-9]$|^409[0-3]$")

我知道我更愿意保留哪一个:)

票数 9
EN

Stack Overflow用户

发布于 2010-02-03 07:42:31

使用阳性前瞻

代码语言:javascript
运行
复制
^(?=.*[a-zA-Z])(?=.*[0-9])[a-zA-Z0-9]{6,10}$

查找四周也被称为零宽度断言。它们是零宽度,就像行的开始和结束一样(^$).不同之处在于,看台将实际匹配字符,但随后放弃匹配,只返回结果:匹配或不匹配。这就是为什么他们被称为“断言”。它们不使用字符串中的字符,而是只断言匹配是否可能。

查找四周的语法:

  • (?=REGEX)正向前瞻
  • (?!REGEX)负前瞻
  • (?<=REGEX)正向后视
  • (?<!REGEX)负后视
票数 7
EN

Stack Overflow用户

发布于 2013-12-05 14:35:29

代码语言:javascript
运行
复制
string r = @"^(?=.*[A-Za-z])(?=.*[0-9])[A-Za-z0-9]{6,10}$";
Regex x = new Regex(r);
var z = x.IsMatch(password);

http://www.regular-expressions.info/refadv.html

http://www.regular-expressions.info/lookaround.html

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2190376

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档