java中的正则表达式:验证、切分

判断一个字符串是否符和规定格式,就要用的正则匹配。

1 验证格式

String类的matches() 函数

第一种是简单的String类的matches() 函数


    @Test
    void testStringMatch() {
        // String 的正则表达式只能判断
        String info = "我的手机号是:137-9172-3627";
        String pattern = "(.+)\\d{3}-\\d{4}-\\d{4}";
        assertTrue(info.matches(pattern));
    }

Patern类的matches函数

    @Test
    void testPaternVerrify() {
        String pattern = "int\\s(\\w[\\w\\d_]*)\\s*=\\s*new\\s*int\\s*;";

        String str = "int myname = new int  ;";
        assertTrue(Pattern.matches(pattern, str));

        String str2 = "int m1m3m_n = new int  ;";
        assertTrue(Pattern.matches(pattern, str2));
    }

2 切分出一段符合格式的字符串 Pattern和Matcher类

    @Test
    void testPaternSearchSubString() {
        // 从一个字符串中取出电话号码的一段
        Pattern pattern = Pattern.compile("\\d{3}-\\d{4}-\\d{4}");
        String info = "我的手机号是:137-9172-3627";
        Matcher matcher = pattern.matcher(info);
        if (matcher.find()) {
            String substring = info.substring(matcher.start(), matcher.end());
            print(substring);
        }

        // 从一段日期中取出生日的日期
        Pattern birthdayPattern = Pattern.compile("\\d{4}[-:/ ]\\d{1,2}[-:/ ]\\d{1,2}"); //yyyy-MM-dd
        String data = "my birthday is 1995-09-13, your is 1994/2/3, he is 2001 1 21";
        Matcher birthdayMatcher = birthdayPattern.matcher(data);
        while (birthdayMatcher.find()) {
            print(data.substring(birthdayMatcher.start(), birthdayMatcher.end()));
        }
        print(birthdayMatcher.replaceAll("yyyy-MM-dd"));
    }

2 正则表达是的最最常用的几个知识点

正在匹配常用概念很简单:

  • 数字\d 字母字符\w 非字符\W 其他字符\S (例如标点符号、空格、换行)
  • 修饰前一个单元:
    • 0次或者1次 ?号
    • 0次或者多次 *号
    • 1次或者多次 +号
    • 必须出现m次 {m}
    • 最少出现m次 {m,}
    • 最少m最多n次{m,n}
  • 在多个中选择一个
    • 多选其一 [ABC] 或者(A|B|C)
    • 范围选择 [a-zA-Z0-9]

关于长度的约束例子

    @Test
    void testPaternRange() {
        String oneOrMorePattern="\\w+";
        assertTrue(Pattern.matches(oneOrMorePattern, "s"));
        assertTrue(Pattern.matches(oneOrMorePattern, "abcd"));
        assertFalse(Pattern.matches(oneOrMorePattern, ""));


        String zeroOrOnePattern="(\\w)?";
        assertTrue(Pattern.matches(zeroOrOnePattern, "a"));
//        assertTrue(Pattern.matches(zeroOrOnePattern, ""));
        assertFalse(Pattern.matches(zeroOrOnePattern, "ab"));

        String zeroOrMorePattern="\\w*";
        assertTrue(Pattern.matches(zeroOrMorePattern, ""));
        assertTrue(Pattern.matches(zeroOrMorePattern, "abcdef"));

        String mOrMorePattern="\\w{3,}";
        assertTrue(Pattern.matches(mOrMorePattern, "abc"));
        assertTrue(Pattern.matches(mOrMorePattern, "abcdefg"));
        assertFalse(Pattern.matches(mOrMorePattern, "ab"));

        String leastMlargestNPattern="\\w{2,4}";
        assertTrue(Pattern.matches(leastMlargestNPattern, "ab"));
        assertTrue(Pattern.matches(leastMlargestNPattern, "abc"));
        assertTrue(Pattern.matches(leastMlargestNPattern, "abcd"));
        assertFalse(Pattern.matches(leastMlargestNPattern, "a"));

    }

范围多选一


    @Test
    void testOptional(){
        String oneOfAnArray="a[\\+\\-\\*/]b";
        assertTrue(Pattern.matches(oneOfAnArray,"a/b"));
        assertTrue(Pattern.matches(oneOfAnArray,"a*b"));

        String a_Or_b ="a|A";
        assertTrue(Pattern.matches(a_Or_b,"a"));
        assertTrue(Pattern.matches(a_Or_b,"A"));

        String azAZ ="[a-zA-Z0-9]";
        assertTrue(Pattern.matches(azAZ,"a"));
        assertTrue(Pattern.matches(azAZ,"h"));
        assertTrue(Pattern.matches(azAZ,"j"));
        assertTrue(Pattern.matches(azAZ,"C"));
        assertTrue(Pattern.matches(azAZ,"2"));
        assertTrue(Pattern.matches(azAZ,"8"));
    }
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值