1.应用实例8921.1对字符串进行以下验证
1.汉字
2.邮政编码
要求:1-9开头的六位数。例如:123890
3.QQ号码
12389、1345687、18769765等1-9开头的要求
4.手机号码
要求:135888899999等13、14、15、18开头的11位数必须以11位数为基础
com中的代码.stulzl.regexp10regexppackage com.stulzl.regexp10;import java.util.regex.Matcher;import java.util.regex.Pattern;////正则表达式应用实例 892public class Regexp10 { public static void main(String[] args) { //1.汉字 //String content = “韩顺平教育”; //String regStr = u0391-ufffe5;// u0391-ufffe5 代表汉字的范围 //2.邮政编码 //要求:是1-9开头的六位数。例如: 123890 //String content = "123890"; //String regStr = \\\\\d{5}$"; //3.QQ号码 //要求是1-9开头的一个(5位数-10位数),例如: 12389 ,1345687,187698765 //String content = "123890"; //String regStr = \\\\\d{4,9}$"; //4.手机号码 //要求:必须是13, 14、15、18开头的11位数,比如13588889999 String content = "13588889999"; String regStr = \\\\\d{9}$"; Pattern pattern = Pattern.compile(regStr); Matcher matcher = pattern.matcher(content); if(matcher.find()){ System.out.println(“满足格式”); }else{ System.out.println(“不符合格式”); } }}
1.2例2URL例题893代码com.stulzl.regexp1Regexp1package com.stulzl.regexp11;import java.util.regex.Matcher;import java.util.regex.Pattern;////正则表达式应用实例 893/urlpubliclic class Regexp11 { public static void main(String[] args) { //String content ="https://www.bilibili.com/video/BV1fh411y7R8from=search&seid=1831060912083761326"; String content = "http://edu.3dsmax.tech/yg/bilibili/my6652/pc/qg/05-51/" + "index.html#201211-1?track_id=jMc0jn-hm-yhrnfvad37ydhouh41XY + “mjls9zocm26gspy5arwwuxb4wywpmh2Q7gzr7dou0wlkviehulo1qntuk” + “yagake2jg1btd23lR57xzv83e9baxwkstcah4jdz7a7thGlqgdcz2zpy” + “33a0SVNMfmJLSNDzJ71TU68Rc-3PKE7VA3kyzjk4RKU”; /** * 思路 * 1. 先确定 url 的开始部分 https:// 或 http:// * 2.然后通过 ([\\w-]+\\.)+[\\w-]+ 例如 匹配 www.bilibili.com * 3.匹配(\/[\\w-?=&/%.#]*)?=&/%.#]*)? /video/BV1fh411y7R8from=sear………… */ //解释 // ^(http|https)://)? 以http为准://或https:///开头,括号中写有共有部分 ?可能有一个也可能没有 // ([\\w-]+\\.)+[\\w-]+ \\w-代表任何字母和 - 字符 \\.代表点(\\ // ([\\w-]+\\.)代表www的整体代表. 即 xx字母. [\\w-]+代表com // (\/\w-?=&/%.#]*)?=&/%.#]*)? \/是转义/的意思,[\\\/w-?=&/%.#]是其中 // 可能有字母,数字,?,=,&,/,%,. ,#等字符,[]外面的*号意味着可能没有或许多(即0)-n) // ()号外?com后面可能有一个,也可能没有一个 //注意:[. ? *]中括号中的特殊字符表示匹配 String regStr = (http|https)://)?([\\w-]+\\.)+[\\w-]+(\/\w-?=&/%.#]*)?$"; Pattern pattern = Pattern.compile(regStr); Matcher matcher = pattern.matcher(content); if(matcher.find()){ System.out.println(“满足格式”); }else{ System.out.println(“不符合格式”); } }}
2.正则表达式三大常用类894java.util.regex包主要包括以下三类:Pattern类、Matcher类和Patternsyntaxexception(异常)
●Pattern类
pattern对象是正则表达对象。pattern没有公共结构方法。为了创建一个pattern对象,调用它的公共静态方法,它返回到pattern对象。该方法接受正则表达作为其第一参数,例如:Pattermr=Pttern.compile(pattern);
●Matcher类
Matcher对象是解释和匹配输入字符串的引擎。和Pattern类一样,Matcher也没有公共结构方法。您需要调用Pattern对象的Matcher方法来获取Matcher对象
●PatternSyntaxException
Patternsyntaxexception是一个非强制性异常类别,它表示正则表达式模式中的语法错误。
2.1Pattern方法matches,即整体匹配matchescom中的代码.stulzl.regexp12Regexp12package com.stulzl.regexp12;import java.util.regex.Pattern;// matches演示Pattern的整体匹配方法 用于整体匹配的894//演示matches方法,验证输入字符串是否符合使用条件 894public class Regexp12 { public static void main(String[] args) { String content = "hello abc hello, 韩顺平教育”“韩顺平教育”; String regStr = "hello.*";//在这里,代表除\n以外的任何字符,*代表前面的字符是否可以有 boolean matches = Pattern.matches(regStr, content); System.out.println(“整体匹配=”+matches); }}
2.2Matcher类895com中的代码.stulzl.regexp13MatcherMethodpackage com.stulzl.regexp13;import java.util.regex.Matcher;import java.util.regex.Pattern;///Matcher类常用方法 895public class MatcherMethod { public static void main(String[] args) { String content = "hello edu jack hspedutom hello smith hello hspedu hspedu"; String regStr = "hello"; Pattern pattern = Pattern.compile(regStr); Matcher matcher = pattern.matcher(content); while (matcher.find()) { System.out.println(===================)); System.out.println(matcher.start());///返回开始匹配的索引 System.out.println(matcher.end());////返回结束匹配的索引 ///解释substring()是截取字符串的功能 System.out.println(”发现:""+content.substring(matcher.start(),matcher.end())); } //整体匹配,检查字符串是否符合某一规则 System.out.println(“整体匹配=”+matcher.matches());//false //完成如果 content 有 hspedu 替换成 韩顺平教育 regStr = "hspedu"; pattern = Pattern.compile(regStr); matcher = pattern.matcher(content); String newContent = matcher.replaceAll(“韩顺平教育”); System.out.println(”新newContentententent= "+newContent); System.out.println(”旧contententent= "+content); }}