正则表达式
- 正则表达式 -> 校验、匹配
- 密码要求 英文、数字,并且不能少于8位,也不能多于20位
正则表达式其实就是一个字符串 [a-zA-Z0-9]{8,20} -> 左包含右不包含
- 转义字符是 \配合字符使用的,如果想表示字符本身,需要加\+,同C语言一样
- 正则表达式的三个重要方法(了解,掌握split)
matches
看是否符合正则表达式
String email="hz_liuzb@163.com";
//要求输入的必须是163或者126邮箱
//6~18个字符,可以是字母/数字/下划线,需要以字母开头
//[a-zA-Z]\w{5,17}@(163|126)\.com
// (单杠在下面会自动加多条杠,因为在字符串中\w会以为是转义字符,但是\w表示的是单词字符串
String regex="[a-zA-Z]\\w{5,17}@(163|126)\\.com";
System.out.println(email.matches(regex));//看是否符合正则表达式(regex)//true
replceAll
replaceAll —>屏蔽敏感词汇的
//replaceAll屏蔽敏感词汇的
String words="你这个SB,gSBjgSBwgSB";
//(SB)+ +可以表示前面的一个或多个,*可以表示前面的0个或多个
String newWords=words.replaceAll("(SB)+","??");
System.out.println(newWords);//你这个??,g??jg??wg??
//如果换成*,打印出??你??这??个????,??g????j??g????w??g????
split
用于切割字符串
str.split("\\.+");//按照符号.切割字符串,后面也有的用+
/*
按照.来切割字符串
.在正则中表示任意字符,所以用\\.来使其变成普通的.
如果192.....168..456这种格式,则\\.+
*/
public static void function3(){
String str="192.168.255.67.01";
String[] strArr=str.split("\\.+");
System.out.println("数组长度为:"+strArr.length);
for (int i=0;i<strArr.length;i++){
System.out.print(strArr[i]+",");
}
}
/*
按照空格切割字符串
*/
public static void function2(){
String str="qw er 78 45 96 yu";
String[] strArr=str.split(" +");
System.out.println("数组的长度为:"+strArr.length);
for (int i=0;i<strArr.length;i++){
System.out.print(strArr[i]+",");
}
System.out.println();
}
/*
String 类方法split对字符串进行切割
12-45-78-96 按照-对字符串进行切割
*/
public static void function1(){
String str="12-45-78-96";
String[] strArr=str.split("-");
for (int i=0;i<strArr.length;i++){
System.out.print(strArr[i]+",");
}
System.out.println();
}
}
字符说明
1.句点符号.
- “.”:能匹配处“\n”之外的任何单个字符
- 若要匹配,则"[.\n]"的模式
- 常用与匹配多个之间夹一个,或多个缺一个的匹配,如"w.n",可以匹配“won”,“win”,“wan”
2.方括号[]
- 里面指定可以匹配的单个字符
3.圆括号()
- 里面的可以用来分组
4.或运算 |
- 使用(168|360)——只能从160、360中选一个——不能用[]
5.特殊字符及匹配次数的符号
-
正则表达式 说明 正则表达式 说明 . 任意一个字符 X? 表示0个或1个X \d 任意一个数字字符,[0-9] X* 表示0个或任意个X \D 非数字字符 X+ 表示1个或任意个X \s 空白字符,[\t\n\xOB\f\r] X{n} 表示n个X \S 非空白字符 X{n,} 表示>=n个X \w 单词字符,[a-zA-Z0-9] X{n,m} 表示n个到m个X \W 非单词字符 \w{9} 表示只能有九个字符,且一定要是单词字符(字母、数字、下划线)
6.连字符 -
- 表示范围——要加-