Java Learn(一)

Java常用正则表达式验证

正则表达式

  • 1.基本概念:

正则表达式本质上就是一个字符串,通常使用 ^ 开始 结尾,用于对用户输入的数据格式进行验证或匹配,其中 ^ 和 可以省略。

  • 2.常用规则:
参数 描述
[abc] 可以出现a,b,c,其他不允许
[^abc] 不可以出现a,b,c,其他允许
\d 表示可以出现任意数字:[ 0 - 9 ]
\D 表示可以出现任意非数字:[^0-9]
\s 表示可以出现任意空白字符:[\t\n\x0B\f\r]
\S 表示可以出现任意非空白字符:[^\s]
\w 表示可以出现任意单词字符:[a-zA-Z_0-9]
\W 表示可以出现任意非单词字符:[^\w]
X? 表示X可以出现一次或一次也没有,也就是0-1次
X* 表示X可以出现零次或多次,也就是0-n次
X+ 表示X可以出现一次或多次,也就是1-n次
X{n} 表示X可以出现恰好n次
X{n,} 表示X可以出现至少n次,也就是>=n次
X{n,m} 表示X可以出现至少n次,但是不超过m次,也就是>=n 并且 <=m次
  • 3.常用的方法
    boolean matches(String regex) — 判断单钱字符串是否满足参数指定的规则
import java.util.Scanner;

public class TestStringReg {
	public static void main(String[] args) {
		// 1.准备一个描述正则表达式的字符串
		// 描述银行卡密码的规则,要求由六位数字组成
		// String reg = "^[0-9]{6}$";
		// 在编码中需要两个\组成一个\识别
		// String reg = "\\d{6}";
		// 描述手机号码的规则,要求由11位数字组成,其中1开头,第二位必须是345789
		// String reg = "[1]{1}[345789]{1}\\d{9}";
		// 描述座机号码的规则,要求3-4位区号,中间使用-连接,后面7-8位号码
		// String reg = "\\d{3,4}[-]{1}\\d{7,8}";
		// 描述身份证号码的规则,要求由17位数字与最后一位是X或者数字组成,前6位要求表示地区,4位表示年份,4位表示月日,3位校验码,最后一位可能是数字可能是X
		// String reg = "\\d{6}\\d{8}\\d{3}[0-9X]{1}";
		// 描述用户名规则,要求6-8位数字、字母以及下划线组成
		// String reg = "\\w{6,8}";
		// 描述邮箱的规则,要求字母、数字以及下划线组成名称,中间@符号,后面2-5位的字母或者数字组成.最后加上后缀.com\.org\.cn\.edu\.com.cn
		String reg = "\\w{1,}[@]{1}[0-9a-zA-Z]{2-5}(.com|.org|.cn|.edu|.com.cn)";
		// 2.不断的提示用户输入一个字符串,若匹配上诉规则则结束输入,否则继续输入
		Scanner sc = new Scanner(System.in);
		while (true) {
			System.out.println("请输入邮箱号码:");
			String str = sc.next();
			if (str.matches(reg)) {
				System.out.println("格式正确!");
				break;
			} else {
				System.out.println("格式不正确!");
				continue;
			}
		}
		sc.close();
	}
}