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

Gri*_*iff 14 regex

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

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

我现在的正则表达式,

if(!/^[a-zA-Z0-9]+$/.test(val))
Run Code Online (Sandbox Code Playgroud)

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

111 // false
aaa1 // true
11a // false
bbc // true
1a1aa // false
Run Code Online (Sandbox Code Playgroud)

And*_*ong 23

要在任何地方强制使用三个字母

/(.*[a-z]){3}/i
Run Code Online (Sandbox Code Playgroud)

应该足够了.

编辑.啊,你编辑了你的问题,说三个字母字符必须是连续的.我还看到您可能希望强制所有字符都应与您的"已接受"字符匹配.然后,前瞻可能是最干净的解决方案:

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

请注意,我使用不区分大小写的修饰符/i以避免必须写入a-zA-Z.

另类.您可以在此处阅读有关环绕声断言的更多信息.但在这个阶段可能会有点过头了.这是一个替代方案,您可能会发现在您已经知道的方面更容易分解:

/^([a-z0-9]*[a-z]){3}[a-z0-9]*$/i
Run Code Online (Sandbox Code Playgroud)

  • 对于那些希望在 `grep` 或 `git grep` 上下文中使用它的人,您需要 `-E` 选项(又名 `--extended-regexp`)来理解 `{n}` 量词。 (2认同)

And*_*ter 19

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

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

{3,} 表示“出现3次以上”。

+也可以写成{1,}

*也可以写成{0,}

  • 我不认为这回答了问题,它回答了对问题本身不回答问题的评论。 (2认同)
  • 是的 - 但对于理解先前答案之一的逻辑仍然非常有帮助。 (2认同)

Mar*_*hev 7

这应该做的工作:

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

它检查至少3个"零或多数数字+ 1个Alpha"序列+零个或多个数字.