单元测试
单元测试的目的在于测试一个方法中的代码是否出错 如果出错则显示暗红色条 没有错误显示绿色条
为什么要使用单元测试:为了正确的检测代码有效性 以及结果的正确性
下载2个jar包
junit
hamcrest //是junit的依赖包
框架 很多个jar包
jar包 工具包
如何导包
在项目中创建一个lib文件夹 将jar包拷贝到该文件夹中 Build Path->Add to Build Path
maven仓库镜像下载地址:
http://maven.ibiblio.org/maven2/ MAVEN仓库的地址
http://maven.aliyun.com/ 阿里云的MAVEN仓库的地址
https://mvnrepository.com/ 中央仓库
http://repository.jboss.org/nexus/content/groups/public/ JBOSS MAVEN仓库
http://www.findjar.com
http://www.docjar.com
正则表达式
字符串的规范
java.utils.regex 包下面的类
Pattern 定义规则 正则表达式 (某个字符串是否符合我们这种规则)
Matcher 判断是否符合这个规则
贪婪模式 一般使用在我们的量词中 {3,6} 至少3次 最多6次
当我们要写比较复杂的正则表达式写不出时,可以拆分为许多个简单的表达式,把复杂的问题简单化。
例如写一个密码,密码必须是6-10位,并包含字符、数字和下划线:
public void regex()
{
// 密码必须是6-10位,并包含字符、数字和下划线
// 拆分为 1. 6-10位 2.字母 3.数字 4.下划线
String regex1=".{6,10}";
String regex2=".*[a-zA-Z].*";
String regex3=".*[0-9].*";
String regex4=".*\\_.*";
String password="dad_adad1";
System.out.println(Pattern.matches(regex1, password));//判断是否符合第一个条件
System.out.println(Pattern.matches(regex2, password));//判断是否符合第二个条件
System.out.println(Pattern.matches(regex3, password));//判断是否符合第三个条件
System.out.println(Pattern.matches(regex4, password));//判断是否符合第四个条件
boolean flag=Pattern.matches(regex1, password)&&Pattern.matches(regex2, password)&&Pattern.matches(regex3, password)&&Pattern.matches(regex4, password);
System.out.println(flag);
}
捕获组和非捕获组
捕获组捕获并保存捕获结果,用\1调用保存的第一个捕获组……
非捕获组只匹配结果,但不捕获结果,也不会分配组号,当然也不能在表达式和程序中做进一步处理。
例如:
是(?=人) 表示人的相邻的前面必须是 是才能匹配 只获取一个
(?<=人)… 以人开头,不包含开头
…(?<=人) 以人结尾,包含结尾
baidu(?!com) 匹配com前面后面所有的baidu
baidu(?<!com) 匹配com开头和结尾的数据
(?:pattern)
匹配pattern,但不捕获匹配结果。
'industr(?:y|ies)
匹配’industry’或’industries’。
调用方式:
Pattern p = Pattern.compile("a*b");
Matcher m = p.matcher("aaaaab");
boolean b = m.matches();
或
boolean matches=Pattern.matches("a*b","aaaaab");
System.out.println(matches);
总结:
(?=X) X,通过零宽度的正 lookahead:
后面必须是什么
(?!X) X,通过零宽度的负 lookahead:
后面不能是什么
(?<=X) X,通过零宽度的正 lookbehind:
前面必须是什么
(?<!X) X,通过零宽度的负 lookbehind:
前面不能是什么
常用的正则表达式
一、校验数字的表达式
1. 数字:^[0-9]*$
2. n位的数字:^\d{
n}$
3. 至少n位的数字:^\d{
n,}$
4. m-n位的数字:^\d{
m,n}$
5. 零和非零开头的数字:^(0|[1-9][0-9]*)$
6. 非零开头的最多带两位小数的数字:^([1-9][0-9]*)+(.[0-9]{
1,2})?$
7. 带1-2位小数的正数或负数:^(\-)?\d+(\.\d{
1,2})$
8. 正数、负数、和小数:^(\-|\+)?\d+(\.\d+)?$
9. 有两位小数的正实数:^[0-9]+(.[0-9]{
2})?$
10. 有1~3位小数的正实数:^[0-9]+(.[0-9]{
1,3})?$
11. 非零的正整数:^[1-9]\d*$ 或 ^([1-9][0-9]*){
1,3}$ 或 ^\+?[1-9][0-9]*$
12. 非零的负整数:^\-[1-9][]0-9"*$ 或 ^-[1-9]\d*$
13. 非负整数:^\d+$ 或 ^[1-9]\d*|0$
14. 非正整数:^-[1-9]\d*|0$ 或 ^((-\d+)|(0+))$
15. 非负浮点数:^\d+(\.\d+)?$ 或 ^[