2013-03-11 184 views
2

我有这个正则表达式只允许字母数字字符。正则表达式来检查至少3个字符?

如何检查字符串是否至少包含3个字母字符。

我现在的正则表达式,

if(!/^[a-zA-Z0-9]+$/.test(val)) 

我想执行字符串,以确保至少有3个连续的字母字符以及左右;

111 // false 
aaa1 // true 
11a // false 
bbc // true 
1a1aa // false 
+3

使用'{3,}'而不是'+' – 2013-03-11 14:26:19

+0

@ka可以在任何字符串中至少匹配三个_characters_而不是至少三个_letters_。 – 2013-03-11 14:28:07

+0

它不起作用111仍然被接受。 – Griff 2013-03-11 14:28:12

回答

10

要强制执行的任何地方3个字母字符,

/(.*[a-z]){3}/i 

应该足够了。

编辑。啊,你编辑了你的问题,说三个字母字符必须是连续的。我也看到你可能想强制执行所有的字符都应该匹配你的“接受”字符之一。然后,先行可能是干净的解决方案:

/^(?.*[a-z]{3})[a-z0-9]+$/i 

请注意,我用的是不区分大小写的修饰符/i为了避免写a-zA-Z

替代方案。您可以阅读更多关于lookaround assertions here。但是在这个阶段它可能会有点凌乱。下面是您可能会发现更容易分解来讲你已经知道一种替代方案:

/^([a-z0-9]*[a-z]){3}[a-z0-9]*$/i 
+0

谢谢你这样一个教育性的答案! – Griff 2013-03-11 14:41:42

0

+表示“1次或1次发生”。

{3}表示“发生3次”。

{3,}表示“发生3次或更多次”。

+也可以写成{1,}。也可以写成{0,}

+0

我不认为这回答了问题,它回答了对本身不回答问题的问题的评论。 – 2013-03-11 14:30:39

3

这应该做的工作:

^([0-9]*[a-zA-Z]){3,}[0-9]*$

它检查至少3个“零或更多的数字+ 1个阿尔法序列+零或更多的数字。

0

你想匹配零个或多个数字,然后连续3个字母,然后任何其他数字的数字?

/\d*(?:[a-zA-Z]){3,}\d*/

-1

假设你正在使用JavaScript,请使用此:

/[a-zA-Z]{3,}/ 

这将在字符串的任何部分匹配至少有三个字符不是至少三个字母。

相关问题