使用正则表达式验证用户名

时间:2018-09-28 06:21:23

标签: regex reactjs

我必须在reactJs中验证用户名。 条件是-

  1. 它应该是字母数字
  2. 应大于5个字符且小于11个字符
  3. 不能以数字开头

我的解决方案无效:

value.match(/^[a-zA-Z][a-zA-Z0-9]{6,10}/)

3 个答案:

答案 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}$

Regex demo

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),以防止匹配。

Demo

阅读this for reference