一、正则表达式的概念
1、什么是正则表达式:
正则表达式是由普通字符(如英文字母)以及特殊字符(也成为元字符)组成的文字模式。该模式对文本查找时需要匹配的一个或多个字符串描述,给出一个匹配模板。
2、正则表达式的优点:
正则表达式可以大大简化文本识别工作,现已超出了某种语言或某个系统的局限,成为被人们广为使用的工具。
二、正则表达式的基本书写符号
1、基本书写符号:
public class Test1 { public static void main(String[] args) { //1、符号[] //只能是6位数字 String s = "132a23"; // 定义正则表达式 String reg = "[0-9]{6}"; // 验证表达式 System.out.println(s.matches(reg)); //2、[^ ] //电话号码:11位-1 s = "12528023850"; reg = "1[^012]\\d{9}"; System.out.println(s.matches(reg)); //3、| //验证一年的12个月: String s = "12"; String a = "[0-9]|1[0-2]"; System.out.println(s.matches(a)); //4、() //邮箱:837786260 @ qq . com|cn s = "837786260@ww.com"; reg = "[0-9a-zA-Z]{5,15}@(qq|126|163).(com|cn)"; System.out.println(s.matches(reg)); //5、- //最少8位的字母 s = "1wertyuil"; reg = "[a-zA-Z]{8,}"; System.out.println(s.matches(reg)); } }
2、常用限定符:限定符将可选数量的数据添加到正则表达式
public class Test { public static void main(String[] args) { //1、* //只能输入数字 String s = "3"; String a = "[0-9]*"; System.out.println(s.matches(a)); //2、+ //只能输入由26个英文字母组成的字符串: String s = "zxcvbn"; String a = "[a-zA-Z]+"; System.out.println(s.matches(a)); //3、{n} //只能输入n位的数字: String s = "323455"; String a = "[0-9]{6}"; System.out.println(s.matches(a)); //4、{n,} //只能输入至少n位的数字: String s = "23456"; String a = "[0-9]{3,}"; System.out.println(s.matches(a)); //5、{n,m} //只能输入n~m位的数字: String s = "234567"; String a = "[0-9]{3,6}"; System.out.println(s.matches(a)); //6、$ //整数或者小数: String s = "1.1234567"; String reg = "^[0-9]*[1-9][0-9]*$|[0-9]{1,999999999}.[0-9]{1,9999999999999}"; System.out.println(s.matches(reg)); } }
3、匹配字符集:
含义:匹配字符集是预定义的用于正则表达式中的符号集。如果字符串与字符集中的任何一个字符相匹配,它就会找到这个匹配项。
public class Test { public static void main(String[] args) { //1、\d //验证电话号码: String s = "18673507143"; String a = "1[^02]\\d{9}"; System.out.println(s.matches(a));
4、分组构造:
三:常用案例
//只能输入数字 [0-9]* //只能输入n位的数字 \d{n} //只能输入至少n位的数字 \d{n,} //只能输入n~m位的数字 \d{n,m} //只能输入0和非0开头的数字 (0|[1-9][0-9]*) //只能输入有两位小数的正实数 [0-9]+(.[0-9]{2})? //只能输入有1~3位小数的正实数 [0-9]+(\\.[0-9]{1,3})? //只能输入非0的正整数 \+?[1-9][0-9]* //只能输入非0的负整数 \-[1-9][0-9]* //只能输入长度为3的字符 .{3} //只能输入由26个英文字母组成的字符串 [a-zA-Z]+ //只能输入由26个大写英文字母组成的字符串 [A-Z]+ //只能输入由26个小写英文字母组成的字符串 [a-z]+ //只能输入由数字和26个英文字母组成的字符串 [a-zA-Z0-9]+ //只能输入由数字和26个英文字母或者下划线组成的字符串 \w+ //整数 “ ^-?\d+$” //英数字加下划线串: “^\w+$” //E-mail地址 “^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$” //验证网站URL “^[a-zA-Z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\s*)?$”