校验密码:
   密码规则
     1里面必须包含数字 和字母
     2必须以字母开头
     3不能出现重复的字母和数字
     4不能含有”nn”
5长度介于4到12之间
     6不能与“oldpasw”相同

解决方案 »

  1.   

    不可以呀,要求是只能用java类来写
      

  2.   

    估计要用正则表达式,用到pattern和mathcr类,在java.util.regex包,建议去查这2个类的API.
      

  3.   

    好复杂的规则哦6 不能与“oldpasw”相同
    ——————————————
    这句什么意思?没看明白
      

  4.   

    3 不能出现重复的字母和数字 
    4 不能含有”nn” 
    ——————————————
    3 和 4 的条件不是一样的么?nn 就是重复的字母啊
      

  5.   

    oldpasw就是把它在java中写死,不用涉及到数据库
      

  6.   

        1里面必须包含数字 和字母 
         2必须以字母开头 
         3不能出现重复的字母和数字 
         4不能含有”nn” 
         5长度介于4到12之间 
         6不能与“oldpasw”相同 1-4用正则表式吧.
    5-6判断下长度和是否与旧密码相同不至于不会吧.不过3和4怎么感觉是一个概念....1  \b\w*找一遍
    2  \d*找一遍
    3  (\d)\1和(\w)\1找一遍其他的应该很简单吧.上面那几个正则表达式不知道还可不可以再合并下,反正大概就是这样了
      

  7.   

    import java.util.regex.Pattern;public class Test {    public static void main(String args[]) {
            String str = "bao1209080";
            String oldpasw = "bao120908";
            String regex = "(?!" + Pattern.quote(oldpasw) + "$)(?=.*[0-9].*)([a-zA-Z])(?!\\1)(?:([0-9a-zA-Z])(?!\\2)){3,11}";
            System.out.println(str.matches(regex));
        }
    }
      

  8.   

    哥们好像你写反了吧,我的意思是不能与oldpasw相同,而你的代码是必须与oldpasw相同才是true,不过写的很正确,我改了一下
      

  9.   

    谁说的?(?!) 是否定型匹配,就是不匹配这个String str = "bao1209080";
    String oldpasw = "bao120908";str 比 oldpasw 后面多了个“0”,所以应该是可以的吧。