当我们判断数据的格式是否符合规范的时候,一般会采用两种方式:
一种是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 + "不是数字");
}
}
}
原文:http://blog.csdn.net/u010792238/article/details/38346987