它是一个用来规范字符串格式的表达式语言。
^ []{} $
^:表示开始
^ 匹配一个输入或一行的开头,
^a 匹配"an A",而不匹配"An a"
$:表示结束
匹配一个输入或一行的结尾,
a$ 匹配"An a",而不匹配"an A"
():表示一个整体
[]:表示范围
方括号表示某些字符允许在一个字符串中的某一特定位置出现:
"[ab]":表示一个字符串有一个"a"或"b"
"^[a-zA-Z]":表示一个以字母开头的字符串;
"[0-9]%":表示一个百分号前有一位的数字;
",[a-zA-Z0-9]$":表示一个字符串以一个逗号后面跟着一个字母或数字结束。
{}:表示次数
大括号括起,用以表示重复次数的范围。
{n}:匹配N次
{n,}:匹配N次以上
{n,m}:匹配N-M次
"ab{2}":表示一个字符串有一个a跟着2个b("abb");
"ab{2,}":表示一个字符串有一个a跟着至少2个b;
"ab{3,5}":表示一个字符串有一个a跟着3到5个b。
?+ : 表示次数*
? : 匹配0或1次,"{0,1}"
+ : 匹配至少1次,相当于"{1,}"
* : 匹配任意次数,相当于"{0,}"
"ab*":表示一个字符串有一个a后面跟着零个或若干个b。
("a", "ab", "abbb",……);
"ab+":表示一个字符串有一个a后面跟着至少一个b或者更多,
("ab", "abbb",……);
"ab?":表示一个字符串有一个a后面跟着零个或者一个b,
("ac","a","ab");
"a?b+$":表示在字符串的末尾,有零个或一个a,跟着一个或几个b。
word:字=字母+数字
\w:一个字符(数字、大小写字母 _),匹配任何字类字符,包括下划线。
与"[A-Za-z0-9_]"等效。
\W:与任何非单词字符匹配。
与"[^A-Za-z0-9_]"等效
digit:数字
\d:一个数字,数字字符匹配。
等效于 [0-9]。
\D:一个非数字,非数字字符匹配。
等效于 [^0-9]。
space:空白
\s:一个空白,匹配任何空白字符,包括空格、制表符、换页符等。
与 [ \f\n\r\t\v] 等效。
\S:匹配任何非空白字符。
与 [^ \f\n\r\t\v] 等效。
\t 匹配一个制表符
\n 匹配一个换行符
\r 匹配一个回车符
[xy]:匹配[]中任意一个
[^xyz] 不匹配这个集合中的任何一个字符
x|y :匹配x或y
\ 做为转意,即通常在"\"后面的字符不按原来意义解释,如\*表示的是一个*号
示例:
手机号:
^1[34578]\d{9}$
或
^1(3|4|5|7|8)\d{9}$
身份证:
//身份证正则表达式(15位)
isIDCard1=/^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$/;
//身份证正则表达式(18位)
isIDCard2=/^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{4}$/;
URL
^((http|https)://)?([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$
字符串是否是汉字:
^[\u4e00-\u9fa5]*$
"[\u4e00-\u9fa5]+
Android studio中查找双引号包裹的字符串
["]{1}[\u4e00-\u9fa5]+["]{1}
判断是否包含:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* Created by Administrator on 2017/9/12.
*/
public class Test1 {
public static void main(String[] args) {
String str = "abcd0hfsjfojfojojojoefg";
//注意一:正则表达式中 \w代表[A-Za-z0-9]中的值
//注意二:正则表达式中 *代表{0,},即0个或0个以上
//以a开头,以f结尾:FALSE
String reg1 = "^a" + "\\w*" + "f$";
Pattern pattern1 = Pattern.compile(reg1);
Matcher matcher1 = pattern1.matcher(str);
boolean rs1 = matcher1.matches();
System.out.println(rs1);
//以b开头,以g结尾:FALSE
String reg2 = "^b" + "\\w*" + "g$";
Pattern pattern2 = Pattern.compile(reg2);
Matcher matcher2 = pattern2.matcher(str);
boolean rs2 = matcher2.matches();
System.out.println(rs2);
//以a开头,以g结尾:TRUE
String reg3 = "^a" + "\\w*" + "g$";
Pattern pattern3 = Pattern.compile(reg3);
Matcher matcher3 = pattern3.matcher(str);
boolean rs3 = matcher3.matches();
System.out.println(rs3);
//以abcd开头,以oefg结尾:TRUE
String reg4 = "^abcd" + "\\w*" + "oefg$";
Pattern pattern4 = Pattern.compile(reg4);
Matcher matcher4 = pattern4.matcher(str);
boolean rs4 = matcher4.matches();
System.out.println(rs4);
//全部为汉字:TRUE
String string="你好世界";
// String string="你好 世界";//带空格FALSE
// String string="你好世界a";//包含字母FALSE
String reg5 = "^[\\u4e00-\\u9fa5]*$";
Pattern pattern5 = Pattern.compile(reg5);
Matcher matcher5 = pattern5.matcher(string);
boolean rs5 = matcher5.matches();
System.out.println(rs5);
}
}