目录
正则表达式可以校验字符串是否满足一定的规则,并用来校验数据格式的合法性;
正则表达式的作用:
校验字符串是否满足规则;
在一段文本中查找满足要求的内容;
在正则表达式里,方括号表示的是范围;
(一)字符类正则表达式
public class RegexDemo1 {
public static void main(String[] args) {
//只能是a,b,c;
System.out.println("----------1-----------");
System.out.println("a".matches("[abc]"));
System.out.println("z".matches("[abc]"));
System.out.println("ab".matches("[abc][abc]"));
//不能是a,b,c;
System.out.println("----------2------------");
System.out.println("a".matches("[^abc]"));
System.out.println("z".matches("[^abc]"));
//a到z,A到Z(包括头尾的范围);
System.out.println("----------3------------");
System.out.println("a".matches("[a-zA-Z]"));
//[a-d[m-p]] a到d,或m-p;
System.out.println("----------4------------");
System.out.println("a".matches("[a-d][m-p]"));//true
//[a-z&&[def]] a-z和def的交集。为:d,e,f;
//如果要求两个范围的交集,需要写符号&&;
//如果写成了一个&,那么&表示的不是交集,而是一个简单的&符号;
System.out.println("----------5------------");
System.out.println("a".matches("[a-z&&][def]"));//true
//[a-z&&][^bc] a-z和非bc的交集(等同于[ad-z])
System.out.println("----------6----------");
System.out.println("a".matches("[a-z&&[^bc]]"));//true
//[a-z&&[^m-p]]a-z和除了m-p的交集,等同于[a-lq-z]
System.out.println("---------7------------");
System.out.println("a".matches("[a-z&&[^m-p]]"));//true
}
}
(二)预定义字符
public class RegexDemo2 {
public static void main(String[] args) {
// \转义字符 改变后面那个字符原本的含义;
//.表示任意一个字符
System.out.println("你".matches(".."));//false
System.out.println("你b".matches(".."));//true
//几个.,对应几个字;
// \d表示任意的一个数字;
//因为所以但是\\表示\
System.out.println("1".matches("\\d"));//true
// \\w是单词字符[a-zA-Z_0-9]
System.out.println("z".matches("\\w"));//true
//数字字母下划线,至少6位;
System.out.println("12345_".matches("\\w{6,}"));//true
//必须是数字和字符,必须是4位;
System.out.println("23dF".matches("[a-zA-Z0-9]{4}"));//true
}
}
(三)练习
public class RegexDemo3 {
public static void main(String[] args) {
//正则表达式验证用户输入的手机号码是否满足要求;
//心得:拿着一个正确的数,从左到右依次去写;
//13112345678
//分成了三个部分:
//1.一:1表示手机号码只能以1开头;
//2.二:[3-9]表示手机号码第二位只能是3-9之间的;
//3.三:\\d{9}表示任意数字可以出现9次,也只能出现9次;
String regex1="1[3-9]\\d{9}";
System.out.println("13112345678".matches(regex1));//true
System.out.println("137123456671".matches(regex1));//false
System.out.println("----------------------");
//随机电话号码
//正则时要把数据分成三部分:
//一:区号;0\\d{2,3}
//0:表示区号一定以0开头;\\d{2,3}表示区号从第二位开始可以是任意的数字,可以出现2-3次;
//二:- ?表示次数,0次或一次;
//三:号码;号码的第一位不能以0开头,第二位可以是任意数字;
//号码的总长度5-10;
String regex2="0\\d{2,3}-?[1-9]\\d{4,9}";
System.out.println("020-2324242".matches(regex2));//true
//邮箱号码:
//一:@的左边 \\w+
//任意的字母数字下划线,至少出现一次就可以了;
//二:@只能出现一次;
//3.1 .左边 [\\w&&[^_]]{2,6}
//任意的字母+数字总共出现2-6次,此时不能出现下划线了;
String regex="\\w+@[\\w&&[^_]]{2,6}\\.[a-zA-Z]{2,3}{1,2}";
}
}