正则表达式

来源:互联网 发布:域名 admin php 跳转 编辑:程序博客网 时间:2024/06/03 12:21

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

^ []{} $

^:表示开始

^ 匹配一个输入或一行的开头,^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]*$ 

判断是否包含:

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);    }}
原创粉丝点击