Java源码-使用正则表达式校验数据有效性

新的项目开始了,只能利用闲暇时间调试代码、发博客了。

心得:

常用正则表达式基本都能在网上找到实例,结合实际情况,修改一下就能做到“他山之石,可以攻玉”了。

关键是,我们要通过不断的学习和实践,知道“如何”去修改。


代码如下:

//Fig. 14.21: Validate.java
//Input and validate data from user using the ValidateInput class.
import java.util.Scanner;

public class FirstValidation
{
public static void main(String[] args)
{
	String firstName;
	String lastName;
	String address;
	String city;
	String state;
	String zip;
	String phone;
 // get user input
 Scanner scanner = new Scanner(System.in);
 
 do{
	   System.out.println("请输入姓:");
	   firstName = scanner.nextLine();
	   if (!validateFirstName(firstName))
		   System.out.println("Invalid first name");
 }
 while(!validateFirstName(firstName));
 
 do{
	   System.out.println("请输入名:");
	   lastName = scanner.nextLine();
	   if (!validateLastName(lastName))
		      System.out.println("Invalid last name");
 }
 while(!validateLastName(lastName));
 
 do{
 System.out.println("请输入地址:");
 address = scanner.nextLine();
 if (!validateAddress(address))
	      System.out.println("Invalid address");
 }
 while(!validateAddress(address));
 
 do{
 System.out.println("请输入城市:");
 city = scanner.nextLine();
 if (!validateCity(city))
	      System.out.println("Invalid city");
 }
 while(!validateCity(city));
 
 do{
 System.out.println("请输入省份:");
 state = scanner.nextLine();
 if (!validateState(state))
	      System.out.println("Invalid state");
 }
 while(!validateState(state));
 
 do{
 System.out.println("请输入邮编");
 zip = scanner.nextLine();
 if (!validateZip(zip))
	      System.out.println("Invalid zip code");
 }
 while(!validateZip(zip));
 
 do{
 System.out.println("请输入电话号码:");
 phone = scanner.nextLine();
 if (!validatePhone(phone))
	      System.out.println("Invalid phone number");
 }
 while(!validatePhone(phone));
 // validate user input and display error message

} 

//Fig. 14.20: ValidateInput.java
//Validating user information using regular expressions.

public static boolean validateFirstName(String firstName)
{
//姓:1-2个汉字
 return firstName.matches("[\u4e00-\u9fa5]{1,2}");
} 

//名:2-4个汉字
public static boolean validateLastName(String lastName)
{
 return lastName.matches("[\u4e00-\u9fa5]{2,4}");
} 

//地址:仅包含汉字和数字,以汉字开头和结尾,至少包含2个汉字和1位数字
public static boolean validateAddress(String address)
{
 return address.matches(
    "[\u4e00-\u9fa5]+(\\d+[\u4e00-\u9fa5]+)+");
}

//城市:只能输入2-12个汉字
public static boolean validateCity(String city)
{
 return city.matches("[\u4e00-\u9fa5]{2,11}");
} 

//省份:只能输入2-9个汉字
public static boolean validateState(String state)
{
 return state.matches("[\u4e00-\u9fa5]{2,9}") ;
}

//邮编:共6位数字,1-9开头
public static boolean validateZip(String zip)
{
 return zip.matches("[1-9]\\d{5}");
}

//手机号:
public static boolean validatePhone(String phone)
{
 return phone.matches("(\\+\\d+)?1[3458]\\d{9}");
}
} // end class ValidateInput

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值