我在表单上有一个用户名条目。我想确保他们输入的是用户名,而不是他们的学生证。学生ID都是数字。用户名可以是字母和几个数字的组合,但永远不会是所有数字。
这就是我现在使用的:
!/^[a-z0-9]+$/i
如何修改它以便最多允许3个数字?我找到了这个片段,但不知道如何将其插入到上面的代码中(假设这是正确的方法)。
[0-9]{1,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}}。
答案 2 :(得分:0)
你的问题并不是很清楚,但是你所提出的问题并不是一个非常具体的表达方式。如果你要检查的是“3个或更少的数字,而不是完全数字”,那么我先说,通过查找任何字母[a-z]
检查输入是不是所有数字然后你可以计算数字的数量做str.split(/\d/).length - 1
(或其他一些字符串字符计数方法)