目录???????
?正则表达式:
?匹配单个字符:
?匹配多个字符(需要加量词):
?正则表达式适用的方法:?
正则表达式:
正则表达式:正确规则的表达式.是指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串。其实就是一种规则。有自己特殊的应用.里面书写的规则是java给我们定的!规则字符在java.util.regex Pattern类中(之后小编会介绍到的!)在Java中可以用字符串来定义正则表达式!
相关的规则如下:
匹配单个字符:
- String regx = "a";? ? ? ? ? ? ? ? ? ? ? ? ? 最简单的正则 匹配a这个字符
- regx = "[a,b,c]";? ? ? ? ? ? ? ? ? ? ? ? ? ? ?[] 是我列表中的某一个匹配上就可以
- regx = "[a,b,c,A,B,C,0,1,2,3]";? ? ? ?同上
- regx = "[a-z]";? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 匹配a-z中的任意一个
- regx = "[A-Z]";? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?匹配A-Z中的任意一个
- regx = "[0-9]";? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 匹配0-9中的任意一个? ? ? ?
- regx = "[a-zA-Z0-9]";? ? ? ? ? ? ? ? ? ? ?匹配a-zA-Z0-9中的任意一个
- regx = "[^0-9]";? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ^取反? ? ? 匹配不是数字的??
- regx = ".";? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 匹配单个任意字符
- regx = "..";? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?匹配两个任意字符
- regx = "\\.";? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? \\转义字符? ? ?\\. 只代表.本身? ?匹配"."
- regx = "a|b";? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?|是或者的意思
- regx = "\\|";? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?\\转义字符? ???\\|只代表|本身? ??匹配"|"
- regx = "\\d";? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?\\d 和[0-9]的意思 一样
- regx = "\\D";? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?\\D 和[^0-9]的意思 一样
- regx = "\\w";? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?跟[a-zA-Z_0-9]的意思一样
- regx = "\\W";? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 跟[^a-zA-Z_0-9]的意思一样
- regx = "\\s";? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 匹配空格字符
- regx = "\\S";? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?匹配不是空格
匹配多个字符(需要加量词):
- regx = "[0-9a-zA-Z]+";? ? ? ? ? ? ? ? ? ?+表示0-9a-zA-Z可以出现 一次或多次
- regx = "[a-z]*";? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?零次或多次 ?大于等于1次 都算多次
- regx = "[A-Z]?";? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 零次或1次
- regx = "[0-9]{5,}";? ? ? ? ? ? ? ? ? ? ? ? ? ?至少出现5次
- regx = "[0-9]{5,15}";? ? ? ? ? ? ? ? ? ? ? ?出现大于等于5次并且小于等于15次
- regx = "[0-9]{11}";? ? ? ? ? ? ? ? ? ? ? ? ? 出现正好11次
例如定义手机号的规则:?
public class Test {
public static void main(String[] args) {
//手机号的规则
//1. 手机号是 11位 每一位是数字字符 2. 手机号是 1 开头 3. 手机号 第二位 3 5 7 8
Scanner sc=new Scanner(System.in);
System.out.println("请输入手机号:");
String s=sc.nextLine();
//制定规则phoneRegx
String phoneRegx = "[1][3578][0-9]{9}";
//[1]就是手机号是 1 开头
//[3578]就是手机号 第二位是 3 5 7 8
//[0-9]{9}是0-9出现9次
//matches()是查看数据是否符号规则的方法
// 输入数据 匹配 规则(正则)
boolean b = s.matches(phoneRegx);
if (b==false){
System.out.println("您输入的手机号格式不正确!");
}else {
System.out.println("输入正确!");
}
}
}
再例如定义qq号的规则:?
public class ZhengZeTest {
public static void main(String[] args) {
/*需求:校验qq号码.
1:要求必须是5 - 15 位数字
2:0 不能开头*/
Scanner sc = new Scanner(System.in);
System.out.println("请输入QQ号");
String qqNumber = sc.nextLine();
boolean flag = checkQQNumber(qqNumber);
if (flag) {
System.out.println("QQ号规则正确");
} else {
System.out.println("QQ号规则错误");
}
}
private static boolean checkQQNumber(String qqNumber) {
//定义规则
String str = "[1-9][0-9]{4,14}";
boolean b = qqNumber.matches(str);
return b;
}
}
正则表达式适用的方法:?
- String[] arr = str.split("正则规则");? ? ? ? ?根据正则来切割字符串.切割好的子字符串会放入到数组中.
- str.replaceAll("正则规则", "字符");? ? ? ? ? 根据正则来替换,用字符替换掉满足正则规则的字符串.
- str.matches("正则规则")? ? ? ? ? ? ? ? ? ? ? ? ? 是查看数据是否符号规则的方法(在上例中提到过)
public class ZZMethodTest {
public static void main(String[] args) {
String str = "我=爱=JAVA";
//根据正则来切割字符串
String[] arr = str.split("=");
System.out.println(arr[0]); //我
System.out.println(arr[1]); //爱
System.out.println(arr[2]); //JAVA
String str2 = "我=adfadsAFfd1212爱=aasdfasdfsdfweefwefdfadsAFfd1212生活";
String[] arr2 = str2.split("[=a-zA-Z0-9]+");
System.out.println(arr2[0]); //我
System.out.println(arr2[1]); //爱
System.out.println(arr2[2]); //生活
//根据中文切割
String[] arr3 = str2.split("[^\\u4e00-\\u9fa5]+");
System.out.println(arr3[0]); //我
System.out.println(arr3[1]); //爱
System.out.println(arr3[2]); //生活
//根据正则来替换
String s = str2.replaceAll("[\\w=]+", ""); //用空字符串替换字符串中的=字母数字组成的字符串
System.out.println(s); //我爱生活
String s1 = str2.replaceAll("[^\\u4e00-\\u9fa5]+", "="); //用=替换字符串中的不是中文的字符串
System.out.println(s1); //我=爱=生活
}
}
(小编也在努力学习更多哟!以后再慢慢分享的啦!)
希望对友友们有所帮助!!!!
|