1、什么是正则表达式?
正则表达式(regular expression)是根据字符串集合内每个字符串共享的共同特性来描述字符串集合的一种途径。正则表达式可以用于搜索、编辑或者处理文本和数据。
Java.util.regex主要包含以下三类:- pattern类: pattern 对象是一个正则表达式的编译表示。Pattern 类没有公共构造方法。要创建一个 Pattern 对象,你必须首先调用其公共静态编译方法,它返回一个 Pattern 对象。该方法接受一个正则表达式作为它的第一个参数。
- Matcher类: Matcher 对象是对输入字符串进行解释和匹配操作的引擎。与Pattern 类一样,Matcher 也没有公共构造方法。你需要调用 Pattern 对象的 matcher 方法来获得一个 Matcher 对象。
PatternSyntaxException:
PatternSyntaxException 是一个非强制异常类,它表示一个正则表达式模式中的语法错误。2、正则表达式主要用于对password、phone、Email等的合法性检查以下就是其简单应用:
对应的类:
package cn.lovepi.chapter07.action;import com.opensymphony.xwork2.ActionSupport;import java.util.regex.Pattern;/*** * 数据校验示例——硬编码格式*/public class ValidateAction extends ActionSupport{ private String username; private String password; private String repassword; private String email; private String phonenumber; private int age; @Override public String execute() throws Exception { return SUCCESS; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getRepassword() { return repassword; } public void setRepassword(String repassword) { this.repassword = repassword; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public String getPhonenumber() { return phonenumber; } public void setPhonenumber(String phonenumber) { this.phonenumber = phonenumber; } public int getAge() { return age; } public void setAge(int age) { this.age = age; }}
类对应的校验方法:
public void validateExecute(){ if (null==username || username.length()<6 ||username.length()>10) { this.addFieldError("username", "username has error"); } if (null==password || password.length()<6||password.length()>10) { this.addFieldError("password", "password has error"); }else if (null==repassword || repassword.length()<6||repassword.length()>10) { this.addFieldError("repassword", "repassword has error"); }else if(!password.equals(repassword)){ this.addFieldError("password", "tow password is not be same"); } if (age<=0 ||age>150) { this.addFieldError("age", "年龄不符合人类规范!"); } //验证邮箱! 123dsaw@163.com //只允许a-z A-Z 1-9 -_ //正则表达式---专门用于复杂字符判断的技术 Pattern p = Pattern.compile("^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(\\.([a-zA-Z0-9_-])+)+$"); if (null==email || !p.matcher(email).matches()) { this.addFieldError("email", "邮箱验证失败!"); } Pattern p1=Pattern.compile("^(((13[0-9])|(15([0-3]|[5-9]))|(18[0,5-9]))\\d{8})|(0\\d{2}-\\d{7,8})|(0\\d{3}-\\d{7,8})$"); if (null==phonenumber || !p1.matcher(phonenumber).matches()) { this.addFieldError("phonenumber", "电话格式不正确!"); this.addActionError("action级别错误!"); } }
参考链接: