Regex 正则表达式是否检查至少3个字符?
我有这个正则表达式,只允许字母数字字符 如何检查字符串是否至少包含3个字母字符 我现在的正则表达式Regex 正则表达式是否检查至少3个字符?,regex,Regex,我有这个正则表达式,只允许字母数字字符 如何检查字符串是否至少包含3个字母字符 我现在的正则表达式 if(!/^[a-zA-Z0-9]+$/.test(val)) 我想强制字符串,以确保至少有3个连续的字母字符,所以 111 // false aaa1 // true 11a // false bbc // true 1a1aa // false +表示“一次或多次出现。” {3}表示“3次出现” {3,}表示“3次或多次出现。” +也可以写成{1,} *也可以写成{0,}以在任何地方强制使
if(!/^[a-zA-Z0-9]+$/.test(val))
我想强制字符串,以确保至少有3个连续的字母字符,所以
111 // false
aaa1 // true
11a // false
bbc // true
1a1aa // false
+
表示“一次或多次出现。”
{3}
表示“3次出现”
{3,}
表示“3次或多次出现。”
+
也可以写成{1,}
*
也可以写成{0,}
以在任何地方强制使用三个字母字符
/(.*[a-z]){3}/i
应该足够了
编辑。啊,你已经编辑了你的问题,说三个字母必须是连续的。我还看到,您可能希望强制所有字符都应与您的一个“已接受”字符匹配。那么,前瞻可能是最干净的解决方案:
/^(?.*[a-z]{3})[a-z0-9]+$/i
请注意,我使用了不区分大小写的修饰符/I
,以避免编写a-zA-Z
备选方案。您可以阅读更多关于。但在这个阶段,这可能有点让你不知所措。以下是一个您可能会发现更容易根据您已经知道的内容进行分解的备选方案:
/^([a-z0-9]*[a-z]){3}[a-z0-9]*$/i
这应该可以完成以下工作:
^([0-9]*[a-zA-Z]){3,}[0-9]*$
它检查至少3个“零或多个数字+1个字母”序列+零或多个数字。是否要匹配零或多个数字,然后是3个连续字母,然后是任何其他数字
/\d*(?:[a-zA-Z]){3,}\d*/
使用{3,}
而不是匹配至少三个字符而不是任何字符串中至少三个字母的+
@ka。它不起作用。111仍然被接受。{3,}意味着字符串必须匹配至少三个字符。如果在逗号后添加一个数字,这也会设置一个最大限制。三个字母字符必须是连续的吗?我不认为这回答了问题,它回答了一个问题的注释,而这个问题本身并没有回答问题。这是正确的-但对于理解前面一个答案的逻辑仍然非常有帮助。对于那些希望在grep
或git grep
上下文中使用此选项的人,您需要-E
选项(也称--extended regexp
)才能理解{n}
量词。