限定修饰符 |
意义 |
示例 |
? |
0次或1次 |
A? |
* |
0次或多次 |
A* |
+ |
1次或多次 |
A+ |
{n} |
正好出现n次 |
A{2} |
{n,} |
至少出现n次 |
A{2,} |
{n,m} |
出现n到m次 |
A{2,6} |
@H_502_182@
6.几个样例
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.regex.PatternSyntaxException;
public class Regular {
//字符串是否是数字
public static String regexIsDigital = “\d+”;
//字符串是否是字母
public static String regexIsAlpha =”\p{Alpha}+”;
//字符串是否是15位或18位的身体证号码
public static String regexIsID=”\d{15}|\d{18}”;
//字符串是否是JJJ开头KKK结尾
public static String regexIsJJJStartKKKEnd=”^JJJ.*KKK$”;
//字符串是否是区号是3或4位数字-(可有可没有)号码任意多少位的数字
public static String regexIsTelePhoneNumber =”[0-9]{3,4}\-?[0-9]+”;
//X@X.com.cn
public static String regexIsEmail = “\w+@\w+(\.\w{2,3})*\.\w{2,3}”;
//字符串是否是汉字
public static String regexIsHanZi=”[\u4e00-\u9fa5]{1,}”;
//查找以Java开头,任意结尾的字符串
public static String regexIsStartJava = “^Java.*”;
//以多条件分割字符串时
public static String regexSplit =”[,|]+”;
public static void main(String[] args) {
testIsDigit();
testIsAlpha();
testIsID();
testStartEnd();
testIsTelePhoneNum();
testEmailAddre();
testIsHanZi();
testIsStartJava();
testSplit();
testReplace();
testPattern();
}
private static void testPattern() {
Pattern pattern = Pattern.compile("");
System.out.println(pattern.matches("[0-9]{6}","200038"));
System.out.println(pattern.matches("\\d{6}","200038"));
}
private static void testReplace() {
Pattern pattern = Pattern.compile("正则表达式");
Matcher matcher = pattern.matcher("正则表达式 Hello World,正则表达式 Hello World");
//替换第一个符合正则的数据
System.out.println(matcher.replaceFirst("Java"));
pattern = Pattern.compile("正则表达式");
matcher = pattern.matcher("正则表达式 Hello World,正则表达式 Hello World");
//替换所有符合正则的数据
System.out.println(matcher.replaceAll("Java"));
}
private static void testSplit() {
Pattern pattern = Pattern.compile(regexSplit);
String data = "Java Hello World Java,Hello,World|Sun";
System.out.println(data+" split by:"+regexSplit);
String[] strs = pattern.split(data);
for (int i=0;i<strs.length;i++) {
System.out.println(strs[i]);
}
}
private static void testIsStartJava() {
pressInfoByPattern("Java不是人",regexIsStartJava);
pressInfoByPattern("dJava不是人",regexIsStartJava);
}
private static void testIsHanZi() {
pressInfo("验证汉字",regexIsHanZi);
}
private static void testIsTelePhoneNum() {
pressInfo("0733-5544",regexIsTelePhoneNumber);
pressInfo("073-566544",regexIsTelePhoneNumber);
pressInfo("073566544",regexIsTelePhoneNumber);
pressInfo("073--566544",regexIsTelePhoneNumber);
}
private static void testStartEnd() {
pressInfo("JJJKKK",regexIsJJJStartKKKEnd);
pressInfo("JJJaaaaKKK",regexIsJJJStartKKKEnd);
pressInfo("JJaaaaKKK",regexIsJJJStartKKKEnd);
pressInfo("JJJaaaaKK",regexIsJJJStartKKKEnd);
}
private static void testIsID() {
pressInfo("111111111111111",regexIsID);
pressInfo("11111111111111",regexIsID);
pressInfo("111111111111122221",regexIsID);
pressInfo("11111111111112222",regexIsID);
}
private static void testIsAlpha() {
pressInfo("da",regexIsAlpha);
pressInfo("d1a",regexIsAlpha);
}
private static void testIsDigit() {
pressInfo("21452",regexIsDigital);
pressInfo("21a452",regexIsDigital);
pressInfo("021452",regexIsDigital);
}
private static void testEmailAddre() {
pressInfo("aaa@",regexIsEmail);
pressInfo("aaaaaaaa",regexIsEmail);
pressInfo("11111@11111fffyu.dfg.com",regexIsEmail);
}
private static void pressInfo(String data,String regex) {
if(data.matches(regex)){
System.out.println(data+":is match regex:"+regex);
}else{
System.out.println(data+":is not match regex:"+regex);
}
}
private static void pressInfoByPattern(String data,String regex) {
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(data);
if(matcher.matches()){
System.out.println(data+":is match regex:"+regex);
}else{
System.out.println(data+":is not match regex:"+regex);
}
}
}
7自己的话
曾经,看到别人能用正则表达式,而自己不会,当时好自卑啊,觉得别人好厉害啊。直到后来,自己坐下来,好好的看了一些正则表达式的资料和例子后,觉得,啊,原来如此。也就是这样,一点都不复杂啊。绝知此事要躬行,古人的话还是有道理的。