正则表达式

它是一个用来规范字符串格式的表达式语言。

^ []{} $

^:表示开始

^ 匹配一个输入或一行的开头,

^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跟着35个b。

?+ : 表示次数*

? : 匹配01次,"{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);

    }
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值