目录
正则表达式是 字符串模式匹配 的技术,一般在使用的时候都会写一个 模式串,比如regStr,然后在s串中找和regStr相匹配的串, 比如查找一个html文本中的某些关键字段的值,比如浏览量,点赞量等;或者说判断s串符不符合regStr的格式要求,也就是校验字符串,判定字符串是否合法,比如是不是邮箱,是不是电话号码等。
正则表达式(Regular Expression)是一种文本模式,包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为"元字符")。
各个语言中都会有正则表达式的应用,下面会有Java的Demo。
主要用来限定字符 (组合) 出现的次数
注意 [] 和 () 含义是不一样的, ()里面的字符要作为一个整体被使用,[] 是可选的列表。
结尾限定符是针对整个字符串
[a-z] // 匹配所有的小写字母 [A-Z] // 匹配所有的大写字母 [a-zA-Z] // 匹配所有的字母 [0-9] // 匹配所有的数字[\u4e00-\u9fa5] // 匹配中文字符
[1-9]\d{5} // 邮政编码
腾讯QQ号:[1-9][0-9]{4,9} (腾讯QQ号从10000开始)
密码(以字母开头,长度在6~18之间,只能包含字母、数字和下划线):^[a-zA-Z]\w{5,17}$
详解正则表达式匹配算法原理_ybdesire的博客-CSDN博客_正则表达式匹配原理
java.util.regex包主要包括 Pattern类和Matcher类。
pattern对象是一个正则表达式对象。Pattern类没有公共构造方法。要创建一个Pattern对
象,调用其公共静态方法,它返回一个Pattern对象。该方法接受一个正则表达式作为它的第
一个参数,比如:Pattern pattern = Pattern.compile(regStr);
Matcher对象是对输入字符串进行解释和匹配的引擎。与Pattern类一样,Matcher也没有
公共构造方法。你需要调用Pattern对像的matcher方法来获得一个Matcher对像
-
- public class RegExpDemo {
- public static void main(String[] args) {
- String content = "一二三四五";
- // String content = "";
- // 汉字
- String reg = "^[\u4e00-\u9fa5]+$"; // 至少有一个汉字字符
- Pattern pattern = Pattern.compile(reg);
- Matcher matcher = pattern.matcher(content);
- if(matcher.find()){
- System.out.println("满足格式");
- }else{
- System.out.println("不满足格式");
- }
-
- // 邮政编码格式 注:满足格式不一定就是邮政编码
- String regyzCode = "^[1-9]\\d{5}$"; // 1 打头 有6位
-
- // qq 号格式 不能0打头 有长度限制
- String regQQCode = "^[1-9]\\d{4,9}$";
-
- //手机号码
- String phoneNumber = "17857917309";
- String regPhoneCode = "^1[3|4|5|8]\\d{9}$";
-
- pattern = Pattern.compile(regPhoneCode);
- matcher = pattern.matcher(phoneNumber);
- if(matcher.find()){
- System.out.println("满足格式");
- }else{
- System.out.println("不满足格式");
- }
-
- }
- }
-
- public class RegExpDemo {
- public static void main(String[] args) {
- // String content = "https://www.bilibili.com/video/BV1Eq4y1E79W?p=17&spm_id_from=pageDriver&vd_source=aa9ba225f33182b05cbf71";
- String content = "https://blog.csdn.net/dalei9243/article/details/84835895";
- // http/https ://
- // 只有英文 数字 不允许有 中文字符
- // 长度限制 不同浏览器不一样
-
- String reg = "^(http(s)?://)?([\\w-]+\\.)+[\\w-]+(/[\\w-?=&/%.#]*)$";
-
- Pattern pattern = Pattern.compile(reg);
- Matcher matcher = pattern.matcher(content);
- if(matcher.find()){
- System.out.println("满足格式");
- }else{
- System.out.println("不满足格式");
- }
- }
- }