我必须在reactJs中验证用户名。 条件是-
我的解决方案无效:
value.match(/^[a-zA-Z][a-zA-Z0-9]{6,10}/)
答案 0 :(得分:2)
您只需要将{6,10}
更改为{5,9}
,因为[a-zA-Z]
已经代表一个字符
value.match(/^[a-zA-Z][a-zA-Z0-9]{5,9}$/)
答案 1 :(得分:2)
您已经在第一个字符类[a-zA-Z]
中匹配了1个字符。
要匹配大于5个字符且小于11个字符,您可以使用{5,9}
作为第二个字符类的量词,并断言行$
的结尾以防止match字符串长于9个字符时,返回前9个字符。
^[a-zA-Z][a-zA-Z0-9]{5,9}$
const strings = [
"A123456789BBBBBBB",
"A123456789"
];
let pattern = /^[a-zA-Z][a-zA-Z0-9]{5,9}$/;
strings.forEach((value) => {
console.log(value.match(pattern));
});
答案 2 :(得分:0)
一种方法是使用先行验证规则来验证字符串。
您可以使用此模式^(?=[a-zA-Z0-9]{5,11}$)(?!\d).+
。
此(?=[a-zA-Z0-9]{5,11}$)
确保字符串^
的开头是5到11个字母数字。
当数字是字符串中的第一个字符时,第二,否定,超前是(?!\d)
,以防止匹配。