正则表达式—(附带案例+答案)

/**
         * [abcd] :abcd 四个字符中单一个
         * [^abc] 除了abc之外的任意一个字
         * | : 或者 
         * (abc) abc 分为一组
         * 
         * — :a-z 小写的a 到小写z  
         * 
         * * 0 次或多次
         * 
         * +:1次或多次
         * ?:0次或者1次
         * [a-z]+: a,abacdsd 123
         * [A-Z]?:只能出现一次 
         * {n}:只能出现n次
         *        [0-9]{6}:必须有6个数字
         *    {n,}:最少出现n次
         *        [a-z]{6,}
         *    {n,m}:最少n次,最多m次
         *    .:除了\n意外的任意字符
         *    \d:相等于[0-9]
         *
         */
        //验证 6位数字以上
//        String s= "123456";
//        //正则表达式
//        String re = "[0-9]+";
//        System.out.println(s.matches(re));
//        
//        
//        s = "12312312";
//        re= "[0-9]+";
//        System.out.println(s.matches(re));
//        
//        str = "-123a123";
//        //整数:正整数、负整数
//        reg = "^([0-9]+)|(-[0-9]+)$";
//        System.out.println(str.matches(reg));
//        
//        //小数:1.0
//        str = "1.1a";
//        reg = "^([0-9]+\\.[0-9]+)|(-[0-9]+\\.[0-9]+)$";
//        reg = "^-?[0-9]+\\.[0-9]+$";

        str = "1";
        reg = "^0?[1-9]|[12][0-9]|3[01]$";
        System.out.println(str.matches(reg));
        //月:12 
        /*
         * 0    1-9
         * 1    0-2
         */
        str = "121";
        reg = "^0?[1-9]|1[0-2]$";
        System.out.println(str.matches(reg));
        
        //年:1900-3000
        /*
         * 1    9    0-9    0-9
         * 2    0-9{3}
         * 3    0{3}
         */
        str = "2999";
        reg = "^19\\d{2}|2\\d{3}|30{3}$";
        System.out.println(str.matches(reg));
        //网址:http://www.baidu.(com|cn|net)
        str = "http://www.heiheihei.com";
        reg = "^http://www\\.\\w{3,}\\.(com|cn|net)$";
        System.out.println(str.matches(reg));
        //手机号码:1 [3-9]\\d{9}
        str = "17670916624";
        reg = "1 [3-9]\\d{9}";

package com.zking.work;

public class Work01 {
public static void main(String[] args) {
//    1、整数或者小数:
//    String str = "123.3";
    String reg = "^[0-9]+|[0-9]+\\.[0-9]+$";
//    String reg = "^\\d+|\\d+\\.\\d+$";
//    System.out.println(str.matches(reg));
    
//    2、只能输入数字:
//    String str = "123";
//    String reg = "^\\d+$";
//    System.out.println(str.matches(reg));
    
//    3、只能输入n位的数字:
    String str = "32425";
    String reg = "^[\\d]{5}$";
    System.out.println(str.matches(reg));
    
//    4、只能输入至少n位的数字:
//    String str = "324321";
//    String reg = "^[\\d]{5,}$";
//    System.out.println(str.matches(reg));
    
//    5、只能输入m~n位的数字:
//    String str = "324355";
//    String reg = "^[\\d]{3,5}$";
//    System.out.println(str.matches(reg));
    
//    6、只能输入由26个英文字母组成的字符串:
//    String str = "ASLKJFDAOSIHD";
//    String reg = "^[\\D]+$";
//    System.out.println(str.matches(reg));
    
    
//    7、只能输入由26个大写英文字母组成的字符串:
//    String str = "ASLDJ";
//    String reg = "^[A-Z]+$";
//    System.out.println(str.matches(reg));
    
    
//    8、只能输入由26个小写英文字母组成的字符串:
//    String str = "ASLDJ";
//    String reg = "^[a-z]+$";
//    System.out.println(str.matches(reg));
    
    
//    9、只能输入由数字和26个英文字母组成的字符串:
//    String str = "ASLDJ324532";
//    String reg = "^[\\w]+$";
//    System.out.println(str.matches(reg));
    
    
//    10、只能输入由数字、26个英文字母或者下划线组成的字符串:
//    String str = "_ASLDJ324532_";
//    String reg = "^[\\w]+|[_]$";
//    System.out.println(str.matches(reg));
    
    
//    11、验证Email地址(邮箱):自己查邮箱格式^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$
//    String str = "3917605828@qq.com";
//    String reg ="^[1-9][\\d]{8,10}@qq\\.com+$";
//    System.out.println(str.matches(reg));
    
    
//    12、验证InternetURL(网址):
//    String str = "http://www.baidu.com";
//    String reg ="^http://www\\.[\\w]{5,30}\\.com+$";
//    System.out.println(str.matches(reg));
    
    
//    13、验证电话号码:
//    String str = "17670916624";
//    String reg ="^1[3-9]\\d{9}$";
//    System.out.println(str.matches(reg));
//    
//    14、验证身份证号(15位或18位数字):200202043112
//    String str = "430523200202043112";
//    String reg ="^[1-8]\\d{14}|[1-8]\\d{17}$";
//    System.out.println(str.matches(reg));
    
//    15、验证一年的12个月:
//    String str = "12";
//    String reg ="^\\d{9}|1[12]$";
//    System.out.println(str.matches(reg));
    
    
    
//    16、验证一个月的31天:
//    String str = "31";
//    String reg ="^3[01]$";
//    System.out.println(str.matches(reg));
    
//    17、六位数的密码,数字只能在3-6里选择:
//    String str = "456456";
//    String reg ="^[3-6]{6}$";
//    System.out.println(str.matches(reg));
    
    
    
//
//    参考题:
//    18、ip地址:
//
//    IP地址的长度为32位,分为4段,每段8位,用十进制数字表示,每段数字范围为0~255,段与段之间用英文句点“.”隔开。例如:某台计算机IP地址为10.11.44.100。
//
//    分析IP地址的组成特点:250-255、200-249、0-199。 
//    这三种情况可以分开考虑, 
//    1. 250-255:特点:三位数,百位是2,十位是5,个位是0~5,用正则表达式可以写成:25[0-5] 
//    2. 200-249:特点:三位数,百位是2,十位是0~4,个位是0~9,用正则表达式可以写成:2[0-4]\d 
//    3. 0-199:这个可以继续分拆,这样写起来更加简单明了. 
//      3.1. 0-9:    特点:一位数,个位是0~9,用正则表达式可以写成:\d 
//      3.2. 10-99:  特点:二位数,十位是1~9,个位是0~9,用正则表达式可以写成:[1-9]\d 
//      3.3. 100-199:特点:三位数,百位是1,十位是0~9,个位是0~9,用正则表达式可以写成:1\d{2} 
//
//    于是0-99的正则表达式可以合写为[1-9]?\d,那么0-199用正则表达式就可以写成(1\d{2})|([1-9]?\d),这样0~255的正则表达式就可以写成(25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d))) 
//    最后,前面3段加上句点.可以使用{3}重复得到,第4段再来一次同样的匹配,得到IP地址的正则表达式:
//
//    String regex = "((25[0-5]|2[0-4]\\d|((1\\d{2})|([1-9]?\\d)))\\.){3}(25[0-5]|2[0-4]\\d|((1\\d{2})|([1-9]?\\d)))";
//            String ip = "62.189.123.6";
//            System.out.println(ip.matches(regex));


}
}
 


 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值