2009-12-21 100 views
-1

好了,所以我终于想通了,我需要以下条件:字母至少有1字

因此正则表达式来执行:

  1. 字母数字
  2. 至少1
  3. 必须有4和8之间字符(或字母/数字)。

即一个字母数字字符串,它必须至少有一个字母,长度在4-8之间。 (所以它不能只是所有的数字或只是所有的字母)。

所有这些都可以在一个正则表达式中完成吗?

+0

由字符我的意思是信,而4-8我的意思是任何字母。 – mrblah 2009-12-21 15:35:44

回答

1

2号和3号似乎相矛盾。下面将匹配的字母数字之间4和8:

/[0-9a-zA-Z]{4,8}/ 
+1

2不矛盾3,但是是多余的。 – 2009-12-21 15:29:42

+0

@Nick Dixon-取决于你将它们解释为意义! – RichardOD 2009-12-21 15:30:45

+0

我在上面澄清了我的帖子。 – mrblah 2009-12-21 15:38:44

0
[a-zA-Z0-9]{4,8} 

第一部分指定的字母数字,而第二部分的4至8个字符指定。

0

尝试:[A-ZA-Z0-9] {4,8}

11

我假设你的意思alphaunumeric,至少一个,和4到8个字符。

试试这个:

(?=.*[a-zA-Z])[a-zA-Z0-9]{4,8} 
  • (?= - 我们使用lookahead,所以我们可以检查的东西,而不会影响比赛

  • .*[a-zA-Z]的其余部分 - 匹配任何其后通过一封信,即检查我们是否至少有一封信

  • [a-zA-Z0-9]{4,8} - 这将匹配一个字母或数字4到8次。

不过,你说的本意是“它不能仅仅是所有数字或只是所有字母”,而是要求1,2和3没有做到这一点,因为它可以将所有字母和满足所有三项要求。这是可能的,你想要这个,有一个额外的先行确认有至少一个数字:

(?=.*[a-zA-Z])(?=.*[0-9])[a-zA-Z0-9]{4,8} 

使用的a-zA-Z不是很国际友谊赛,所以你可以使用转义码为“信”会更好如果有正则表达式的味道。

此外,我希望这不匹配可接受的密码,因为4个字符可能不够长。

+0

我就是这么读的。 – 2009-12-21 15:34:41

+0

**。*** **** **。+ ** – serhio 2009-12-21 16:01:10

+0

它不应该是+,因为它不会匹配1aaa。 – 2009-12-21 23:50:41

1
?Regex.IsMatch("sdf", "(?=.+[a-zA-Z])[a-zA-Z0-9]{4,8}") 
false 
?Regex.IsMatch("sdfd", "(?=.+[a-zA-Z])[a-zA-Z0-9]{4,8}") 
true 
?Regex.IsMatch("1234", "(?=.+[a-zA-Z])[a-zA-Z0-9]{4,8}") 
false 

警告的**。*。+

// At least one letter does not match with .* 
?Regex.IsMatch("1111", "(?=.*[a-zA-Z])[a-zA-Z0-9]{4,8}") 
false 

?Regex.IsMatch("1aaa", "(?=.+[a-zA-Z])[a-zA-Z0-9]{4,8}") 
true 
相关问题