Javascript 需要Regex帮助进行字段验证

Javascript 需要Regex帮助进行字段验证,javascript,regex,validation,coldfusion,Javascript,Regex,Validation,Coldfusion,我需要根据以下要求验证字段: 必须至少包含6个字符 不能超过50个字符。 必须至少包含一个字母字符 必须至少有一个其他字符。 其他字符只能是数字或以下8个字符中的任意一个:下划线、连字符、句点、符号和、美元、星形、感叹号、@符号 我提出了下面的正则表达式,但它并不总是有效,它允许一些我想排除的特殊字符 /^(?!.*(.)\1)((?=.*[^\w\d\s])(?=.*\w)|(?=.*[\d])(?=.*\w)).{6,50}$/ 它真的必须是一个regexp吗?我只需要编写一个函数来测试这

我需要根据以下要求验证字段:

必须至少包含6个字符 不能超过50个字符。 必须至少包含一个字母字符 必须至少有一个其他字符。 其他字符只能是数字或以下8个字符中的任意一个:下划线、连字符、句点、符号和、美元、星形、感叹号、@符号 我提出了下面的正则表达式,但它并不总是有效,它允许一些我想排除的特殊字符

/^(?!.*(.)\1)((?=.*[^\w\d\s])(?=.*\w)|(?=.*[\d])(?=.*\w)).{6,50}$/

它真的必须是一个regexp吗?我只需要编写一个函数来测试这些条件中的每一个

function isValid(password)
{
    return password.length >= 6 
        && password.length <= 50
        && password.match(/[A-Za-z]/)
        && password.match(/[0-9_\-.&$*!@]/);
}

这不容易吗?

这是因为你匹配了。最后,如果满足了所有条件,那么任何最多50个的剩余字符都可以是任意字符。我将使用:

/^(?=.{6,50}$)(?=.*[a-zA-Z])(?=.*[\d_.&$*!@-])[a-zA-Z\d_.&$*!@-]*$/

我想说,你需要以下几点:

字母或符号* 信件+ 象征+ 字母或符号*

字母或符号* 象征+ 信件+
字母或符号*

不,很抱歉,这看起来太简单了。这应该是一个很长很复杂的正则表达式,当你读到它时,你会觉得开发人员昏倒后在键盘上睡着了,因为他们有强烈的冲动想喝4Loco和Monster以及慢性酒,以保持程序员的形象。哇哇哇哇。。。这些有毒化学品泄漏听起来像垃圾是什么?在我的时代,程序员喝咖啡和山露。@erik-除了Matt所问的,这有可能是cfinput模式吗?@erik-好的。那你能解释一下为什么马特的方法对你不可行吗?因为它要简单得多,而且最终的结果是一样的。@erik重言式的理由并不十分有用。对不起,我只是想帮你解决你的问题,尤其是因为没有其他人给出了正确的基于正则表达式的答案。你为什么要使用一个正则表达式?您不能就他们失败的原因向用户提供适当的反馈。@Bradley re:第二句话,当然可以。尊敬的用户:您的输入与以下正则表达式不匹配:[snip]请返回并修改您的输入。有关详细信息,请参见。@Matt,它非常适合极客website@erik这是真的,因为在您列出的4个要求中,您没有声明任何不允许使用的字符。只有最低要求。我将编辑我的帖子,以反映只允许字母、数字和您所说的符号必须至少使用其中一种。我猜这就是您希望它们被限制的内容?抱歉,上面的正则表达式根本无法验证任何内容