代码之家  ›  专栏  ›  技术社区  ›  user3173015

检查字符串是否包含数字和符号

  •  0
  • user3173015  · 技术社区  · 10 年前

    我正在为一所大学的账户创建网站工作。

    我的问题是,如果用户设置的密码不包含数字和/或符号,我想返回错误消息,我需要帮助。

    密码需要包含大小写字母、数字和符号(!、#、%或&)。我需要特定的错误消息。

    有什么建议吗?我正在使用HTML和JS。

    2 回复  |  直到 10 年前
        1
  •  2
  •   Matthew    10 年前

    我建议使用Regex并检查每个

    像这样:

    function validateStr(str) {
        var regex = new RegExp("[A-Z]+"); // Check for uppercase first   
        if(regex.test(str) == true) {
            regex = new RegExp("[0-9]+"); // Now we check for numbers   
            if(regex.test(str) == true) {
                regex = new RegExp("[a-z]+"); // checking now for lowercase
                if(regex.test(str) == true) {
                    return 1;   
                } else return 2;
            } else return 3;
        } else return 4;
    }
    

    我没有包含“特殊字符”参数,因为您必须将这些字符单独包含在一个正则表达式中,我不建议您这样做。 我正在努力让它在JSFiddle上运行,所以我没有包含任何内容,但如果您需要我进一步解释,请发表评论。

        2
  •  1
  •   foobar    10 年前

    虽然基于JS和regexp的解决方案是一个很好的开始(因为在客户端执行,所以速度更快),但我建议您仔细检查服务器端。

    由于我看到您可能正在使用eZPublish(基于这个问题的标记…),请随意重写eZUser类(使用eZPublisher自动加载系统或使用PHP包含路径魔法),然后破解eZUser::validatePassword()方法以满足您的要求。