//正则表达式
[abc]:a或b或c
[^abc]:任意非a,b,c
[a-z]或[A-Z]或[a-zA-Z]:字符区间
[0-9]或\d:纯数字,\D:表示非数字,
[^\d] .:任意字符
^:表示匹配字符串的开始部分,一个字符串的开始标识,如果出现在[]内部则表示非 (js中使用)
$:表示匹配字符串的结束位置(js中使用)
\w:表示匹配数字、字母、下划线,\W:跟\w相反
\s:匹配任意空白字符(空格和tab)
X?:匹配要小于等于一次,如[s]?表示字符串必须是s或空字符串
X*:0或任意次,如[s]*表示为空字符串,如果不为空则起始字符必须是s,后面如果还有字符,也必须是s
X+:大于等于一次
X{n}:不多不少刚好n次
X{n,}:大于等于n次
X{n,m}:大于等于n次,小于等于m次
如何使用正则表达式:
1.使用String中的方法matches(reg)
2.f = Pattern.matches(reg, s);
3.上面两种都是 //对于一个规则,如果要多次使用,可只用编译一次 Pattern p = Pattern.compile(regex); Matcher m = p.matcher(input); f = m.matches();
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Test {
public static void main1(String[] args) {
//qq号标准:1.全数字;2.首字符不能是0;3.长度在5~15位
String qq = "2345";
String reg = "[1-9][0-9]{4,14}";
System.out.println(qq.matches(reg));
}
public static void main2(String[] args) {
String reg = "[s]?";
reg="[s]*";
reg="[s]+";
reg="[s]{3}";
reg="[s]{3,}";
reg="[s]{3,5}";
String str = "ssss";
System.out.println(str.matches(reg));
}
public static void main3(String[] args) {
String reg = "ao?b";
reg = "ao+b";
reg = "ao{4,}b";
String s = "aooooooooooob";
System.out.println(s.matches(reg));
}
public static void main(String[] args) {
//1.首字符是1;2.第二个字符必须是3,5,7,8,9;3.长度11
String reg = "1[35789][0-9]{9}";
reg = "1[35789]\\d{9}";
String s = "139139999";
//用法一:
boolean f = false;
f = s.matches(reg);
//用法二:
f = Pattern.matches(reg, s);
//用法三:
Pattern p = Pattern.compile(reg);
Matcher m = p.matcher(s);
f = m.matches();
}
}