欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 旅游 > 正则表达式

正则表达式

2025/9/18 8:34:38 来源:https://blog.csdn.net/weixin_48690722/article/details/141790939  浏览:    关键词:正则表达式

正则表达式可以校验字符串是否满足一定的规则,并用来校验数据格式的合法性需求:

假如现在要求校验一个qq号码是否正确。

规则:6位及20位之内,0不能在开头,必须全部是数字

先使用目前所学知识完成校验需求然后体验一下正则表达式检验。

 

/*** @author gyf* @ClassName Test* @Date 2024/9/1 22:00* @Version V1.0* @Description :*/
public class Test {public static void main(String[] args) {String QQ = "123456789";System.out.println(check(QQ));System.out.println("----------");/*表示字符串的第一个字符必须是从 '1' 到 '9' 之间的任意数字。\\d 表示一个数字字符,相当于 [0-9]。{5,19} 表示前面的数字字符可以重复 5 到 19 次。*/boolean matches = QQ.matches("[1-9]\\d{5,19}");System.out.println(matches);}public static boolean check(String str) {// 长度限制if (str.length() < 6 || str.length() > 20) {return false;}// 检验是否以0开头
//        str.startsWith("0");// 判断全部都是数字char[] chars = str.toCharArray();for (int i = 0; i < chars.length; i++) {if (i == 0) {if (chars[0] == '0') {return false;}}// 判断是否是数字
//            Character.isDigit(chars[i])if (chars[i] < '0' ||  chars[i] > '9') {return false;}}return true;}}

正则表达式的作用

1. 校验字符串是否满足规则
2.在一段文本中查找满足要求的内容

 

       //public boolean matches(String regex):判断是否与正则表达式匹配,匹配返回true// 只能是a b cSystem.out.println("-----------1-------------");System.out.println("a".matches("[abc]")); // trueSystem.out.println("z".matches("[abc]")); // false// 不能出现a b cSystem.out.println("-----------2-------------");System.out.println("a".matches("[^abc]")); // falseSystem.out.println("z".matches("[^abc]")); // trueSystem.out.println("zz".matches("[^abc]")); //falseSystem.out.println("zz".matches("[^abc][^abc]")); //true// a到zA到Z(包括头尾的范围)System.out.println("-----------3-------------");System.out.println("a".matches("[a-zA-z]")); // trueSystem.out.println("z".matches("[a-zA-z]")); // trueSystem.out.println("aa".matches("[a-zA-z]"));//falseSystem.out.println("zz".matches("[a-zA-Z]")); //falseSystem.out.println("zz".matches("[a-zA-Z][a-zA-Z]")); //trueSystem.out.println("0".matches("[a-zA-Z]"));//falseSystem.out.println("0".matches("[a-zA-Z0-9]"));//true// [a-d[m-p]] a到d,或m到pSystem.out.println("-----------4-------------");System.out.println("a".matches("[a-d[m-p]]"));//trueSystem.out.println("d".matches("[a-d[m-p]]")); //trueSystem.out.println("m".matches("[a-d[m-p]]")); //trueSystem.out.println("p".matches("[a-d[m-p]]")); //trueSystem.out.println("e".matches("[a-d[m-p]]")); //falseSystem.out.println("0".matches("[a-d[m-p]]")); //false// [a-z&&[def]] a-z和def的交集。为:d,e,f// 细节 如果要求两个范围的交集 那么需要写符号&&// 如果写成一个& 那么此时&表示的就不是交集了,而是一个简单的&符号(且)System.out.println("----------5------------");System.out.println("a".matches("[a-z&[def]]")); //trueSystem.out.println("&".matches("[a-z&[def]]")); //trueSystem.out.println("&".matches("[a-z&&[def]]")); //falseSystem.out.println("d".matches("[a-z&&[def]]")); //trueSystem.out.println("0".matches("[a-z&&[def]]")); //false// [a-z&&[^bc]] a-z和非bc的交集。(等同于[ad-z])System.out.println("-----------6------------_");System.out.println("a".matches("[a-z&&[^bc]]"));//trueSystem.out.println("b".matches("[a-z&&[^bc]]")); //falseSystem.out.println("0".matches("[a-z&&[^bc]]")); //false// [a-z&&[^m-p]] a到z和除了m到p的交集。(等同于[a-1q-z])System.out.println("-----------7-------------");System.out.println("a".matches("[a-z&&[^m-p]]")); //trueSystem.out.println("m".matches("[a-z&&[^m-p]]")); //falseSystem.out.println("0".matches("[a-z&&[^m-p]]")); //false}
public class MyTest {public static void main(String[] args) {// \ 转义字符 改变后面那个字符原本的含义//练习:以字符串的形式打印一个双引号//"在Java中表示字符串的开头或者结尾//此时\表示转义字符,改变了后面那个双引号原本的含义//把他变成了一个普普通通的双引号而已。System.out.println("\"");// \表示转义字符//两个\的理解方式:前面的\是一个转义字符,改变了后面\原本的含义,把他变成一个普普通通的\而已。System.out.println("c:Users\\moon\\IdeaProjects\\basic-code\\myapi\\src\\com\\itheima\\a08regexdemo\\RegexDemo1.java");//.表示任意一个字符System.out.println("你".matches("..")); //falseSystem.out.println("你".matches(".")); //trueSystem.out.println("你a".matches(".."));//trueSystem.out.println("---------------------------------------------");// \\d 表示任意的一个数字// \\d只能是任意的一位数字// 简单来记:两个\表示一个\System.out.println("a".matches("\\d")); // falseSystem.out.println("3".matches("\\d")); // trueSystem.out.println("333".matches("\\d")); // falseSystem.out.println("333".matches("\\d\\d\\d")); // trueSystem.out.println("---------------------------------------------");//\\w只能是一位单词字符[a-zA-Z_0-9]System.out.println("z".matches("\\w")); // trueSystem.out.println("2".matches("\\w")); // trueSystem.out.println("21".matches("\\w")); // falseSystem.out.println("你".matches("\\w"));//falseSystem.out.println("_".matches("\\w"));// trueSystem.out.println("---------------------------------------------");// 非单词字符System.out.println("你".matches("\\W")); // trueSystem.out.println("---------------------------------------------");// 以上正则匹配只能校验单个字符。// 必须是数字 字母 下划线 至少 6位System.out.println("2442fsfsf".matches("\\w{6,}"));//trueSystem.out.println("244f".matches("\\w{6,}"));//falseSystem.out.println("---------------------------------------------");// 必须是数字和字符 必须是4位System.out.println("23dF".matches("[a-zA-Z0-9]{4}"));//trueSystem.out.println("23_F".matches("[a-zA-Z0-9]{4}"));//falseSystem.out.println("23dF".matches("[\\w&&[^_]]{4}"));//trueSystem.out.println("23_F".matches("[\\w&&[^_]]{4}"));//falseSystem.out.println("---------------------------------------------");}
}

 

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词