正则表达式允许字母和最多3个数字?

时间:2018-01-15 19:13:08

标签: javascript regex

我在表单上有一个用户名条目。我想确保他们输入的是用户名,而不是他们的学生证。学生ID都是数字。用户名可以是字母和几个数字的组合,但永远不会是所有数字。

这就是我现在使用的:

!/^[a-z0-9]+$/i

如何修改它以便最多允许3个数字?我找到了这个片段,但不知道如何将其插入到上面的代码中(假设这是正确的方法)。

[0-9]{1,3}

提前感谢您的帮助。

3 个答案:

答案 0 :(得分:1)

如果你有超过3位的数字,这是一个匹配的正则表达式,所以如果你得到一个匹配,那么这是一个错误的学生名。

var good = ["bill123", "n1n1n1", "n1", "nmnnnn"]
var bad = ["1234", "bill1234", "n1n1n1n1", "n1111"]

for (let g of good) {
  console.log(g.search('(.*[0-9]){4}'));
}

for (let b of bad) {
  console.log(b.search('(.*[0-9]){4}'));
}

答案 1 :(得分:1)

你想要的正则表达式是/^((?:.*\d.*){4,}|\d{1,})$/g

^字符串锚的开始

(?:.*\d.*){4,}匹配字符串中包含4个或更多数字

|替代

\d{1,}匹配,如果字符串中只有数字

$字符串锚点结束

如果您只想匹配字母,请更改(?:.*\d.*){4,}的{​​{1}}。

Test it Here!

答案 2 :(得分:0)

你的问题并不是很清楚,但是你所提出的问题并不是一个非常具体的表达方式。如果你要检查的是“3个或更少的数字,而不是完全数字”,那么我先说,通过查找任何字母[a-z]检查输入是不是所有数字然后你可以计算数字的数量做str.split(/\d/).length - 1(或其他一些字符串字符计数方法)