当前位置: 移动技术网 > IT编程>开发语言>正则 > 14 正则表达式

14 正则表达式

2020年07月17日  | 移动技术网IT编程  | 我要评论

14 正则表达式

补:

SimpleDateFormat类

  • SimpleDateDormat主要是用于将日期进行格式化 , 可以将Date转成指定格式的字符串 , 也可以将字符串转成日期
构造方法 :
public SimpleDateFormat();					//按默认格式做转换

public SimpleDateFOrmat(String pattern);	//按指定格式做转换
成员方法 :
public String format(Date date);			//将Date转为String

public Date parse(String dateStr) throws ParseException;//将String转成Date
public class DateDemo1 {
	public static void main(String[] args) throws ParseException {
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss E");
		
		Date date = new Date();
		
		String s = sdf.format(date);
		
		System.out.println(s);
		
		SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
		
		String s2 = "1999年1月30日 1:30:00";
		
		Date parse = sdf2.parse(s2);
		
		System.out.println(parse);
		
		long t1 = parse.getTime();
		long t2 = System.currentTimeMillis();
		long t3 = t2 - t1;
		
		System.out.println(t3 / 1000 / 60 / 60 / 24);
	}
}
d 月中的某一天 , 一位数的日期没有前导零
dd 月中的某一天 , 一位数的日期有一个前导零
ddd 周中某天的缩写名称,在 AbbreviatedDayNames中定义
ddddd 周中某天的完整名称,在 DayNames 中定义
M 月份数字 , 一位数的月份没有前导零
MM 月份数字 , 一位数的月份有一个前导零
MMM 月份的缩写名称 ,在 AbbreviatedMonthNames中定义
MMMM 月份的完整名称 ,在 MonthNames中定义
y 不包含纪元的年份 , 如果不包含纪元的年份小于 10 , 则显示不具有前导零的年份
yy 不包含纪元的年份 , 如果不包含纪元的年份小于 10 , 则显示具有前导零的年份
yyy 包括纪元的四位数的年份
gg 时期或纪元 , 如果要设置格式的日期不具有关联的时期或纪元字符串 , 则忽略该模式
h 12 小时制的小时 , 一位数的小时数没有前导零
hh 12 小时制的小时 , 一位数的小时数有前导零
H 24 小时制的小时 , 一位数的小时数没有前导零
HH 24小时制的小时 , 一位数的小时数有前导零
m 分钟。一位数的分钟数没有前导零。
mm 分钟。一位数的分钟数有一个前导零。
s 一位数的秒数没有前导零。
ss 一位数的秒数有一个前导零。
f 秒的小数精度为一位 , 其余数字被截断
ff 秒的小数精度为两位 , 其余数字被截断
fff 秒的小数精度为三位 , 其余数字被截断
ffff 秒的小数精度为四位 , 其余数字被截断
fffff 秒的小数精度为五位 , 其余数字被截断
ffffff 秒的小数精度为六位 , 其余数字被截断
fffffff 秒的小数精度为七位 , 其余数字被截断

正则表达式

概述 :

正则表达式是对字符串操作的一种逻辑公式 , 就是用事先定义好的一些特定字符 , 及这些特定字符的组合 , 组成一个 “规则字符串”, 这个 " 规则字符串" 用来表达对字符串的一种过滤逻辑 .

常用规则 :

. 任何字符(与行结束符可能匹配也可能不匹配)
\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,零次或多次
X+ X,一次或多次
X{n} X,恰好 n 次
X{n,} X,至少 n 次
X{n,m} X,至少 n 次,但是不超过 m 次
[abc] a、b 或 c(简单类)
\b 单词边界

验证QQ号
//非正则方式
import java.util.Scanner;

public class PattrernDemo1 {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入您的QQ号");
		String qq = sc.next();

		System.out.println(checkQQ(qq));
	}

	private static boolean checkQQ(String qq) {
		if (qq.length() <= 5 || qq.length() >= 15) {
			return false;
		}
		if (qq.startsWith("0")) {
			return false;
		}
		for (int i = 0; i < qq.length(); i++) {
			if (!Character.isDigit(qq.charAt(i)))
				return false;
		}
		return true;
	}
}
//正则方式
import java.util.Scanner;

public class PattrernDemo2 {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入您的qq号");
		String qq = sc.nextLine();
		
		boolean  result  = checkQQ2(qq);
		if(result) {
			System.out.println("qq合法");
		}else {
			System.out.println("您的qq格式不正确");
		}
	}
	private static boolean checkQQ(String qq) {
		String regex = "[1-9]\\d{4,14}";
		return qq2.matches(regex);
	}
}
匹配功能
public boolean matches(String regex);
public class PattrernDemo3 {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		System.out.println("请输入一串手机号:");
		String phone = sc.next();
		String regex1 = "1[356789]\\d{9}";
		System.out.println(phone.matches(regex1));
		
		System.out.println("请输入一个邮箱账号:");
		String mail = sc.next();
		String regex2 = "[a-zA-Z1-9]\\w{4,14}@[a-zA-Z0-9]{2,}(\\.[a-zA-Z]{2,3})+";
		System.out.println(mail.matches(regex2));
	}
}
分割功能
public String[] split(String regex);
public class PattrernDemo4 {
	public static void main(String[] args) {
		String s1 = "ii,jj,kk";
		String[] sp1 = s1.split(",");
		System.out.println(Arrays.toString(sp1));
		
		String s2 = "ii.jj.kk";
		String[] sp2 = s2.split("\\.");
		System.out.println(Arrays.toString(sp2));
		
		String s3 = "ii jj kk";
		String[] sp3 = s3.split("\\s");
		System.out.println(Arrays.toString(sp3));

		String s4 = "C:\\Users\\Apase\\Desktop\\CSDN";
		String[] sp4 = s4.split("\\\\");
		System.out.println(Arrays.toString(sp4));
	}
}
替换功能
public String replaceAll(String regex,String replacement);
public class PattrernDemo5 {
	public static void main(String[] args) {
		String s = "18434763218";
		
		String str = s.replaceAll("(\\d{3})(\\d{4})(\\d{4})","$1****$3");
		
		System.out.println(str);
	}

}
获取功能
public static Pattern compile(String regex);		//将给定的正则表达式编译到模式中

public Matcher matcher(CharSequence input);			//创建匹配给定输入与此模式的匹配器

public boolean find();								//尝试查找与该模式匹配
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class PattrernDemo6 {
	public static void main(String[] args) {
		
		String s = "jin tian yao xia yu,da jia pa bu pa ?  huang bu huang ? are  you sure?";
		
        //获取Pattern对象
		Pattern pt = Pattern.compile("\\b[a-zA-Z]{3}\\b");
		
		//匹配器
		Matcher matcher = pt.matcher(s);
		
        //获取结果
		while (matcher.find()) {
			System.out.println(matcher.group());
		}
	}
}

本文地址:https://blog.csdn.net/Baldteen_/article/details/107373006

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网