我有这个正则表达式只允许字母数字字符。正则表达式来检查至少3个字符?
如何检查字符串是否至少包含3个字母字符。
我现在的正则表达式,
if(!/^[a-zA-Z0-9]+$/.test(val))
我想执行字符串,以确保至少有3个连续的字母字符以及左右;
111 // false
aaa1 // true
11a // false
bbc // true
1a1aa // false
我有这个正则表达式只允许字母数字字符。正则表达式来检查至少3个字符?
如何检查字符串是否至少包含3个字母字符。
我现在的正则表达式,
if(!/^[a-zA-Z0-9]+$/.test(val))
我想执行字符串,以确保至少有3个连续的字母字符以及左右;
111 // false
aaa1 // true
11a // false
bbc // true
1a1aa // false
要强制执行的任何地方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
谢谢你这样一个教育性的答案! – Griff 2013-03-11 14:41:42
+
表示“1次或1次发生”。
{3}
表示“发生3次”。
{3,}
表示“发生3次或更多次”。
+
也可以写成{1,}
。也可以写成{0,}
。
我不认为这回答了问题,它回答了对本身不回答问题的问题的评论。 – 2013-03-11 14:30:39
这应该做的工作:
^([0-9]*[a-zA-Z]){3,}[0-9]*$
它检查至少3个“零或更多的数字+ 1个阿尔法序列+零或更多的数字。
你想匹配零个或多个数字,然后连续3个字母,然后任何其他数字的数字?
/\d*(?:[a-zA-Z]){3,}\d*/
假设你正在使用JavaScript,请使用此:
/[a-zA-Z]{3,}/
这将在字符串的任何部分匹配至少有三个字符不是至少三个字母。
使用'{3,}'而不是'+' – 2013-03-11 14:26:19
@ka可以在任何字符串中至少匹配三个_characters_而不是至少三个_letters_。 – 2013-03-11 14:28:07
它不起作用111仍然被接受。 – Griff 2013-03-11 14:28:12