正则表达式,检查字符串是否在两个长度之间,并且只有字母和数字

时间:2014-01-17 14:54:50

标签: javascript jquery regex

我正在尝试通过客户端验证来验证表单中的用户名字段,我遇到了一些麻烦。

我正在尝试将它们与正则表达式匹配,这似乎适用于我的密码强度/匹配。但是,当我尝试将正则表达式更改为适合用户名的正则表达式时,它不起作用。

这是正常的表达式,它会检查长度是否至少为6个字符。

var okRegex = new RegExp("(?=.{6,}).*", "g");

这是另一个不起作用的正则表达式:

var okRegex = new RegExp("/^[a-z0-9_-]{3,16}$/");

如何编写执行用户名验证的正则表达式? (它有一定的长度,只有字母和数字)

2 个答案:

答案 0 :(得分:4)

您正在将正则表达式文字与RegExp构造函数混合使用。使用其中一个,但不是两个:

okRegex = new RegExp('^[a-z0-9_-]{3,16}$');

okRegex = /^[a-z0-9_-]{3,16}$/;

答案 1 :(得分:1)

正如@zzzzBow所说,你正在混淆两种使用正则表达式的方法。选择其中一个。现在,分解:

^匹配字符串的开头(这意味着字符串必须以后面的内容开头)。

[a-z0-9_-]匹配字符a-z,A-Z,数字0-9 _(下划线)和 - (短划线/连字符)。

{3,16}说明上述字符类必须有3-16个出现。

$匹配字符串的结尾,因此在上面的16个字符之后不能是任何内容。

希望有所帮助。