正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。
正则表达式是对字符串(包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为“元字符”))操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。正则表达式是一种文本模式,模式描述在搜索文本时要匹配的一个或多个字符串。
https://baike.baidu.com/item/正则表达式/1700215?fr=aladdin
正则符号:
含义 |
符号 |
数字 |
[0-9] \d |
字母 |
[a-zA-Z] |
空白字符 |
[ fx0B] |
表示非 |
[^规则] |
任意字符(换行除外) |
. (点) |
正则开始 |
^ |
正则结束 |
$ |
正则数量:
符号 |
含义 |
+ |
n≥1 1到多个 |
* |
n≥0 0到多个 |
? |
0≤ n ≤1 0或1个 |
{n} |
n个 |
{n,} |
n ≤ n到多个 |
{n,m} |
n≤num ≤m n到m个 |
正则逻辑:
含义 |
符号 |
分组 |
() |
或 |
| |
且 |
什么都不写 |
实例1:验证邮箱
public class Judge { public static void main(String[] args) { //定义要匹配Email地址的正则表达式 String regex = "\w+@\w+(\.\w{2,3})*\.\w{2,3}"; String str1 = "aaa@"; //定义要进行验证的字符串 String str2 = "aaaaa"; String str3 = "1111@111ffyu.dfg.com"; if(str1.matches(regex)) { //判断字符串变量是否与正则表达式匹配 System.out.println(str1+"是一个合法的Email地址格式"); } if(str2.matches(regex)) { //判断字符串变量是否与正则表达式匹配 System.out.println(str2+"是一个合法的Email地址格式"); } if(str3.matches(regex)) { //判断字符串变量是否与正则表达式匹配 System.out.println(str3+"是一个合法的Email地址格式"); } } }
正则表达式分析:
通常情况下Email的格式为“X@X.com.cn”。字符X表示任意一个或多个字符,@为邮箱地址中的特有符号,符号@后还有一个或多个字符,之后是字符“.com”或“.cn”。字符集"\w"匹配任意字符,符号“+”表示字符可以出现一次或多次,表达式"(\.\w)*"表示形如“.com”格式的字符串可以出现0次或多次。而最后的表达式“\.\w+”用于匹配Email地址中的结尾字符,如“.com”。
实例2:验证手机号
import java.util.Scanner; public class Mobile { public static void main(String[] args) { //手机号是11位数字,前3位是136/130开头,后八位是随机数 Scanner input = new Scanner(System.in); System.out.println("请输入手机号:"); String phoneNumber = input.nextLine(); //规则 String gz = "^(([1][3][6])|([1][3][0]))([0-9]{8})$"; boolean rel = phoneNumber.matches(gz); if (rel) { System.out.println("ok"); }else { System.out.println("no"); } } }
实例3:验证邮箱
//邮箱zhangsan_.abc@qq.com为例,前缀:字母、数字、下划线、点、减号,@,qq/126/139/sina,com/com.cn/org/cn public class EmailJudge { public static void main(String[] args) { String str = "asd123@qq.com"; //规则 String gz = "^([0-9a-zA-Z_.-]{3,18})"+"[@]"+"(([q]{2})|([1][2][6])|([1][3][9])|([s][i][n][a]))[.]" +"(([c][o][m])|([c][n])|([c][o][m][.][c][n]))$"; boolean rel = str.matches(gz); if (rel) { System.out.println("ok"); } else { System.out.println("no"); } } }