正则表达式检查至少3个字符?

时间:2013-03-11 14:25:27

标签: regex

我有这个正则表达式只允许使用字母数字字符。

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

我目前的正则表达式,

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

我想强制执行字符串以确保至少有3个连续的字母字符;

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

5 个答案:

答案 0 :(得分:21)

在任何地方强制执行三个字母,

/(.*[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

答案 1 :(得分:8)

+表示“1次或1次出现。”

{3}表示“3次出现。”

{3,}表示“3次或更多次出现。”

+也可以写为{1,}

*也可以写为{0,}

答案 2 :(得分:6)

这应该做的工作:

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

检查至少3个“零或多数数字+ 1个Alpha”序列+零个或多个数字。

答案 3 :(得分:0)

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

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

答案 4 :(得分:-1)

假设您使用的是javascript,请使用:

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

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