正则实现示例

1、包含A或者B,且不包含C

(?!.*hi)(?=.*abc|efg.*)

此处A为abc,B为efg ,C为hi

   String reg =  "(?!.*hi)(?=.*abc|efg.*)";
   Pattern pattern  = Pattern.compile(reg, Pattern.CASE_INSENSITIVE) ;
   String test = "11abc2345efg789hi";
   Matcher m =  pattern.matcher(test) ;
   System.out.println(m.find()); // false

  test = "11abc2345efg789h1i";

  m =  pattern.matcher(test) ;
  System.out.println(m.find()); // true

2、连续3个字母或数字:"([0-9a-zA-Z]{1,2})\\1{2}"

循环获取:

String reg =  "([0-9a-zA-Z]{1,2})\\1{2}";// "([0-9a-zA-Z])\\1{2}";
String test = "ababab1cdcdcd2eee34445";

Pattern pattern  = Pattern.compile(reg, Pattern.CASE_INSENSITIVE) ;

Matcher m =  pattern.matcher(test) ;
while(m.find()){
        System.out.println(m.group());
}

结果:

ababab
cdcdcd
eee
444

3、0加上2-3个数字加上"-" 加上8个数字,即区号-电话号码029-12345678或0898-12345678

        String reg = "(0[\\d]{2,3}-[\\d]{8})";
        Pattern pattern  = Pattern.compile(reg, Pattern.CASE_INSENSITIVE) ;
        String test = "0129-12345678029-87654321";
        Matcher m = pattern.matcher(test) ;
        int i = 0 ;
        while (m.find()){
            System.out.println((++i) + "、  --  "+m.group(1)) ;
        }

结果:

1、  --  0129-12345678
2、  --  029-87654321

4、查找单词hi  :\\bhi\\b

\\b代表着单词的开头或结尾,也就是单词的分界处。虽然通常英文的单词是由空格,标点符号或者换行来分隔的,但是\b并不匹配这些单词分隔字符中的任何一个,它只匹配一个位置

5、强密码验证 :^(?=^.{8}$)(?=.*\\d)(?=.*\\W+)(?=.*[A-Z])(?=.*[a-z])(?!.*\\n).*$

String reg = "^(?=^.{8}$)(?=.*\\d)(?=.*\\W+)(?=.*[A-Z])(?=.*[a-z])(?!.*\\n).*$";
Pattern pattern  = Pattern.compile(reg, Pattern.CASE_INSENSITIVE) ;
String test = "12345~aB";
Matcher m = pattern.matcher(test) ;

if (m.find()){
    System.out.println("matched") ;
}

由五个零宽断言和一个负向零宽断言(负向表否定)组成。前五个分别是:必须是8位以上、必须出现数字、必须出现特殊符号(非字母数字下划数)、必须出现大写字母、必须出现小写字母。最后一个负向零宽断言是:不得出现换行。大家会发现每个断言都是以 .* 开头,那这个表示什么意思呢?因为这些断言都是写在同一位置,而同一位置是不可能同时出现以上六种情况的。所以用 .* 来告诉表达式,这个断言之前可以有字符(意即这个断言可以出现在接下来的字符串任何位置)。

String str  = "A7890BAAAACB12345" ;
//String reg = "(.*(?!(\\w)\\1{4}).*){17}" ;
String reg = "(?!.*(.)\\1{4}.*)([\\dA-HJ-NPR-Z]{12}[\\d]{5})"  ;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值