所有的正则匹配符号都在java.util.Pattern类之中进行定义.
3.边界匹配
4.数量表示:前面的正则都只表示一位,如果想表示多位,则需要数量表示
验证电话号码是否正确
常用符号如下:
1.字符:匹配单个字符
- a:表示匹配字母a;
- \\:匹配转义字符"\\";
- \t:匹配转义字符"\t";
- \n:匹配转义字符"\n;
2.一组字符:任意匹配里面的一个单个字符
- [abc]: 表示匹配abc之中的任意一个;
- [^abc]:表示不是其中任意一个;
- [a-zA-Z]:表示全部字母中的任意一个;
- [0-9]:表示全部数字的任意一个;
3.边界匹配
- ^: 表示一组正则的开始;
- $: 表示一组正则的结束;
4.数量表示:前面的正则都只表示一位,如果想表示多位,则需要数量表示
- 正则表达式?:正则出现0次或者1次;
- 正则表达式*:正则出现0次或者1次或者多次;
- 正则表达式+:正则出现1次或者多次;
- 正则表达式{n}:正则出现n次;
- 正则表达式{n,}: 正则出现n次以上;
- 正则表达式{n,m}:正则出现n至m次;
5.逻辑表示:与,或,非
- 正则表达式A正则表达式B:表达式A之后紧跟表达式B;
- 正则表达式A|正则表达式B:表达式AB任选一个;
- (正则表达式):多个子表达式合成一个,作为组出现;
6.简写表达式
- .: 表示任意一位字符;
- \d:表示任意一位数字,等价于[0-9];
- \D: 表示任意一位非数字,等价于[^0-9];
- \w: 表示任意一位数字,字母,下划线,等价于[a-zA-Z0-9];
- \W: 表示任意一位非数字,字母,下划线,等价于[^a-zA-Z0-9];
- \s: 表示任意一位空格,例如:\n,\t等;
- \S: 表示任意一位非空格;
在JDK1.4之后,String类对正则有了直接的方法支持.常常用方法如下:
//与指定正则匹配
public boolean matchs(String regex);
//替换满足指定正则的全部内容
public String replaceAll(String regex,String replacement);
//替换满足指定正则的首个内容
public String replaceFist(String regex,String replacement);
//按指定正则全拆分
public String[] split(String regex);
按指定正则拆分为指定个数
public String[] split(String regex,int limit);
使用正则完成数字验证
//使用正则完成验证
public class TestDemo {
public static void main(String[] args) throws Exception {
String str = "123"; // 定义字符串
if (str.matches("\\d+")) { // 正则验证
System.out.println("是由数字所组成!");
} else {
System.out.println("不是由数字所组成!");
}
}
}
将字符串中的字母消除
public class TestDemo {
public static void main(String[] args) throws Exception {
String str = "a1bb2ccc3dddd4eeeee5fffffff6ggggggg7";
String regex = "[a-zA-Z]+"; // 字母出现1次或多次
System.out.println(str.replaceAll(regex, "")); // 全部替换
System.out.println(str.replaceFirst(regex, "")); // 替换首个
}
}
字符串按照数字拆分
public class TestDemo {
public static void main(String[] args) throws Exception {
String str = "a1bb2ccc3dddd4eeeee5fffffff6ggggggg7";
String regex = "\\d"; // 数字出现1次,[0-9]
String result[] = str.split(regex); // 拆分
for (int x = 0; x < result.length; x++) {
System.out.print(result[x] + "、");
}
}
}
要求字符串格式“aaaaab”,在b之前可以有无数多个a,但是不能没有,至少1个。
public class TestDemo {
public static void main(String[] args) throws Exception {
String str = "aaaaaab";
String regex = "a+b"; // 1个或多个字母a和1个字母b
System.out.println(str.matches(regex)); // 正则验证
}
}
验证一个字符串是否是整型数据,如果是则将其变为int型数据,而后执行乘法操作
public class TestDemo {
public static void main(String[] args) throws Exception {
String str = "123"; // 定义字符串
String regex = "\\d+"; // 是否为数字
if (str.matches(regex)) { // 符合于验证要求
int data = Integer.parseInt(str); // 字符串变为int型数据
System.out.println(data * data);
} else {
System.out.println("字符串不是数字所组成!");
}
}
}
验证字符串是否是小数,如果是则将其变为double型数据,而后执行乘法操作
public class TestDemo {
public static void main(String[] args) throws Exception {
String str = "123.1";
String regex = "\\d+(\\.\\d+)?";
if (str.matches(regex)) { // 符合于验证要求
double data = Double.parseDouble(str); // 字符串变为double型数据
System.out.println(data * data);
} else {
System.out.println("字符串不是数字所组成!");
}
}
}
输入一个字符串,按照年-月-日 时-分-秒的形式,如果正确,则将其变为Date型数据
import java.text.SimpleDateFormat;
import java.util.Date;
public class TestDemo {
public static void main(String[] args) throws Exception {
String str = "1998-09-19 10:10:10.100"; // 字符串
String regex = "\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2}\\.\\d{3}";
if (str.matches(regex)) { // 符合于验证要求
Date date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS")
.parse(str);
System.out.println(date);
} else {
System.out.println("字符串不是日期!");
}
}
}
一个用户名只能由字母、数字、_所组成,其长度只能是6~15位
public class TestDemo {
public static void main(String[] args) throws Exception {
String str = "343234FDSF_";
String regex = "\\w{6,15}";
if (str.matches(regex)) { // 符合于验证要求
System.out.println("用户名合法。");
} else {
System.out.println("用户名非法!");
}
}
}
验证电话号码是否正确
public class TestDemo {
public static void main(String[] args) throws Exception {
String str = "51283346";
// 第一步:\\d{7,8},因为电话号码可能是7~8位所组成;
// 第二步:(\\d{3,4})?\\d{7,8},因为区号由3~4位所组成;
// 第三步:(\\d{3,4})?-?\\d{7,8},因为-可能出现也可能不出现
// 第四步:((\\d{3,4}|\\(\\d{3,4}\\))-?)?\\d{7,8}
String regex = "((\\d{3,4}|\\(\\d{3,4}\\))-?)?\\d{7,8}";
if (str.matches(regex)) { // 符合于验证要求
System.out.println("TRUE,电话号码输入合法。");
} else {
System.out.println("FLASE,电话号码输入非法!");
}
}
}
验证一个email地址,email地址的用户名由字母、数字、_、.所组成,其中不能以数字和.开头,而且email地址的域名只能 是.com、.cn、.net
public class TestDemo {
public static void main(String[] args) throws Exception {
String str = "mldnqa@163.net";
String regex = "[a-zA-Z_][a-zA-Z_0-9\\.]*@[a-zA-Z_0-9\\.]+\\.(com|cn|net)";
if (str.matches(regex)) { // 符合于验证要求
System.out.println("TRUE,EMAIL输入合法。");
} else {
System.out.println("FLASE,EMAIL输入非法!");
}
}
}