java正则表达式实战之密码策略

最近在用java开发一个注册模块,里面的密码策略涉及到了正则表达式,于是我就按照QQ帐号注册的密码策略用正则表达式去实现字符的过滤,QQ帐号注册的密码策略如下图:


密码策略涉及到了三个要求,我们就用正则表达式一个一个地来实现,最终用代码进行逻辑与运算就可以了。

 

长度为6-16个字符:.{6,16}

不能包含空格:\\S*

不能是9位以下纯数字:(.*\\D.*){1,8}|.{9,}

 

代码如下:

public classRegexp {

 

   public boolean matchs(String str) {

      if (str.matches(".{6,16}")&& str.matches("\\S*")

            &&str.matches("(.*\\D.*){1,8}|.{9,}"))

         return true;

      else

         return false;

   }

}

 

 

 

下面用Junit写些测试用例来测试一下:

import staticorg.junit.Assert.*;

import org.junit.runner.RunWith;

import org.junit.Test;

import org.junit.runners.Parameterized;

import org.junit.runners.Parameterized.Parameters;

import java.util.Arrays;

import java.util.Collection;


@RunWith(Parameterized.class)

public classRegexpTest {

  

   private static Regexp regexp=new Regexp();

   private String param;

   private boolean result;

  

   public RegexpTest(Stringparam,booleanresult){

      this.param=param;

      this.result=result;

   }

  

   @Parameters

   public staticCollection<Object[]> data(){

      return Arrays.asList(new Object[][]{

            {"1234a",false},

            {"1234567890123456a",false},

            {"12 345a",false},

            {"12345678",false},

            {"123456789",true},

            {"12345a",true},

      });

   }

  

   @Test

   public void test() {

      assertEquals(regexp.matchs(param),result);

   }

}

 

 

 

 

测试结果:

 

从测试结果可以看到,6条测试用例全部执行成功!这证明所写的正则表达式满足了我们的需求。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值