Javascript 需要一个正则表达式来验证长度为6到25个字符的字母数字

Javascript 需要一个正则表达式来验证长度为6到25个字符的字母数字,javascript,regex,jquery-validate,validation,alphanumeric,Javascript,Regex,Jquery Validate,Validation,Alphanumeric,我已经创建了这个正则表达式,用于密码feild的表单验证 "/^[[A-Za-z0-9]+[A-Za-z0-9, .!@#$%^&*()_]*]{3,25}$/", 它接受所有字母数字字符和特殊字符,但仅接受特殊字符是不可接受的 问题在于长度检查:( 应该是这样的 Valid: aaaaaaaaa Valid: 111111111 Valid: 11111n11111 Valid: nnnn1jkhuig InValid: @@@@@@@@ 但这是错误的 aaaaaaaaaaaa

我已经创建了这个正则表达式,用于密码feild的表单验证

"/^[[A-Za-z0-9]+[A-Za-z0-9, .!@#$%^&*()_]*]{3,25}$/",
它接受所有字母数字字符和特殊字符,但仅接受特殊字符是不可接受的

问题在于长度检查:(

应该是这样的

Valid: aaaaaaaaa 
Valid: 111111111
Valid: 11111n11111
Valid: nnnn1jkhuig
InValid: @@@@@@@@
但这是错误的

aaaaaaaaaaaa

还有

我认为您的regexp有点奇怪,您将一个集合封装在一个集合中


它应该类似于带括号的
/^([A-Za-z0-9]+[A-Za-z0-9,.!@$%^&*()

/^([A-Za-z0-9]+[A-Za-z0-9, .!@#$%^&*()_]*){3,25}$/
但是这也不起作用,因为量词
{3,25}
也不能嵌套

试试这个

^(?=.{3,25})[A-Za-z0-9]+[A-Za-z0-9, .!@#$%^&*()_]*$
(?=.{3,25})
是一种前瞻性的方法,它可以确保您的长度要求

^(?=.*[A-Za-z0-9])[A-Za-z0-9, .!@#$%^&*()_]{6,25}$
()解释:

  • 字符串应在6到25个字符上与
    [A-Za-z0-9,.!@$%^&*()匹配
  • 字符串
    [A-Za-z0-9]
    中的某个位置必须存在(确保字符串不只是由特殊字符组成)

您可以使用零宽度肯定断言来解决此问题。这是正则表达式,我将在下面对其进行解构

/(?=.*[A-Za-z0-9])[A-Za-z0-9, .!@#$%^&*()_]{3,25}/
第一个组件是
(?=.[A-Za-z0-9])
。构造
(?=…)
是一个零宽度断言,这意味着它检查某些内容,但不“吃掉”任何输出。如果“…”部分匹配,断言通过,正则表达式继续。如果不匹配,断言失败,正则表达式返回为不匹配。在这种情况下,我们的“…”是“*[A-Za-z0-9]”,它只是说“检查是否存在字母数字字符,我们不在乎在哪里”


下一个组件是
[A-Za-z0-9,.!@$%^&*(){3,25}
只说在任何有效字符中匹配3到25个字符。我们已经知道其中至少有一个是字母数字,因为我们的正向前瞻断言,所以这就足够了。

事实上,我的有点缺陷,它不会检查最大大小,您需要使用stema解决方案或检查字符长度之前或之后的大小。但是字符串“@abc,ali”的大小对这里生成的正则表达式u有效吗?+1这比我的解决方案好一点(祝贺10k)。