首页 > 代码库 > Java杂谈之正则表达式--日期,邮箱,数字验证

Java杂谈之正则表达式--日期,邮箱,数字验证

当我们判断数据的格式是否符合规范的时候,一般会采用两种方式:

一种是if...else不断的嵌套或者if...else并排判断的方式

(这两者代表以条件正确为前提还是以条件错误为前提的)

另一种就是正则表示式。


字符串匹配给正则表达式:boolean matches(Stirng regex)

用法:String.matches(regex)


当然可以说if...else是万能的,正则表达式是有局限的,不能过分依赖,它只是解决问

题的一种手段而已,并不是必要的。

但往往用正确的使用正则表达式能让程序简洁,事半功倍。虽然有一些难懂,但只要熟悉

记住了常用的正则表达式还是很有必要的。


以下是代码示例,分别对日期,邮箱,数字进行简易的验证

(当然可能存在错误和思维漏洞,请大家辩证地去看,这边只是简易的而已,大神可以略

过的)


判断日期:

package JavaTestString;

import java.util.Scanner;

//正则表达式
//求YYYY/MM/DD的正则表达式
//\d{4}\d{2}/\d{2}

public class JavaRegex {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		String input = scan.next();
		//正则表达式格式验证
		if(!input.matches("\\d{4}/\\d{2}/\\d{2}"))
		{
			System.out.println(input + "不满足'YYYY/MM/DD'的格式");
		}
	}

}

判断邮箱格式:

package JavaTestString;

import java.util.Scanner;

//利用正则表达式判断邮箱是否符合规范

public class JavaCheckEmailByRegex {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		String email = scan.next();
		if(email.matches("\\w{3,}@\\w{1,}\\.(com|cn|net)"))
		{
			System.out.println(email + "是正确的邮箱形式");
		}
		else 
		{
			System.out.println(email + "不是正确的邮箱形式");
		}
	}

}

判断是否为数字:

package JavaTestString;

import java.util.Scanner;

//判断一个数是否为数字
//正负号有且只有一个,并放在首位
//正负号后面紧跟数字
//小数点只能在数字后面,且不能在最后,最多只能有一个


public class JavaCheckNumberByRegex {
	public static void main(String[] args) {
		//[+|-]?\d+\.?\d+
		Scanner scan = new Scanner(System.in);
		String input = scan.next();
		String mathes = null;
		if(input.indexOf(".")>=0)
		{
			mathes="[+-]?\\d+\\.?\\d+";
		}
		else
		{
			mathes = "[+-]?\\d+";
		}
		if(input.matches(mathes))
		{
			System.out.println(input + "是数字");
		}
		else
		{
			System.out.println(input + "不是数字");
		}
	}

}