zoukankan      html  css  js  c++  java
  • 常用正则表达式

    第一个字符为中文或英文字母,只包含中文、字母、数字、下划线、连字符"-" 的字符串

     无空格,"^"表示字符串开头,"$"表示字符串结尾,"*"表示前面的子表达式"[A-Za-zu4e00-u9fa50-9_-]"字母、中文、数字、下划线、连字符"-" 重复0次或更多次

    ^[A-Za-zu4e00-u9fa5][A-Za-zu4e00-u9fa50-9_-]*$

    Java测试代码

    public class RegexTest {
    
        @Test
        public void testComplex(){
    
            String pattern = "^[A-Za-z\u4e00-\u9fa5][A-Za-z\u4e00-\u9fa50-9_\-]*$";
            Pattern r = Pattern.compile(pattern);
            List<String> list = Stream.of(
                    "",
                    " ",
                    "_",
                    "-",
                    "好",
                    "T",
                    "_好",
                    "好_",
                    "T_",
                    "好-T",
                    "T_好",
                    "T_好 ",
                    "T _好"
            ).filter(s -> r.matcher(s).matches())
                    .collect(Collectors.toList());
    
            list.forEach(System.out::println);
    
    
        }
    }

    测试结果如下:

    {0, 31}表示前面的子表达式重复0次或31次,则字符串length可以是1~32

    ^[A-Za-zu4e00-u9fa5][A-Za-zu4e00-u9fa50-9_-]{0,31}$

    匹配不包含任意字母的长度大于0的字符串

    ^[^a-zA-Z]+$

    匹配文本中以"What exactly"开头的所有行

    (What exactly){1}[a-z ]+

    正则表达式中"[]"与"()"的区别

    比如"[abc]"时a,b,c其中之一,"[0-9]"指的是其中一个0-9的数字(abc)"是abc连在一起的字符串

    用Java实现的例子:

    /**
         * 这里和下面的Pattern主要是为了区分正则表达式中"[]"与“()"的区别;
         * "[abc]"时a,b,c其中之一,"(abc)"是abc连在一起的字符串
         * 匹配"abc"开头的纯字母字符串(无空格等), 字符串长度为3~30
         */
        public final Pattern ABC_MATCH = Pattern.compile("^(abc)[\w]{0,27}$");
    
        /**
         * 匹配'a'或'b'或'c'开头的纯字母字符串(无空格等),字符长度1~30
         */
        public final Pattern CONTAINS_A_OR_B_OR_C = Pattern.compile("^[abc][\w]{0,29}$");
    /**
         * 匹配"abc"开头的纯字母字符串(无空格等), 字符串长度为3~30
         */
        @Test
        public void matchTheStringBeginningWithAbc(){
            Stream.of("", "cba", "abc", "abcdddd", "abcabc", "abcccccccccccccccccccccccccccccccc")
                .filter(ABC_MATCH.asPredicate()).forEach(System.out::println);
    //        abc
    //        abcdddd
    //        abcabc
        }
    
        /**
         * 匹配'a'或'b'或'c'开头的纯字母字符串(无空格等),字符长度1~30
         */
        @Test
        public void containsLetter(){
            Stream.of("fabc", "c", "bdd", "dabc", "aaaaaa", "abcccccccccccccccccccccccccccccccc")
                .filter(CONTAINS_A_OR_B_OR_C.asPredicate()).forEach(System.out::println);
    //        c
    //        bdd
    //        aaaaaa
        }

    匹配数字 如果这个数字是一位数,那么它只能是1~9;如果是两位数它可以是01~99,如果是三位数可以是001~999

    合法:1, 01, 001, 900, 230, 30, 020, 300;
    不合法:00,000,非数字.

    ^([1-9]|[0][1-9]|[1-9][0-9]|[0-9][0-9][1-9]|[0-9][1-9][0]|[1-9][0-9][0])$

    匹配一个字符串:以"abc"开始,结束同样以"abc",中间必须要有1~10位数字

    比如:"abc13123123abc"

    这个正则表达式中的"1"代表此处的匹配内容和前面的第一个小括号"(abc)"一样,"2"则代表第二个小括号匹配的内容,以此类推,"3","4","5"......

    ^(abc)d{1,10}1$

    在线正则表达式测试

    https://regexr.com/ 

    https://www.sojson.com/regex/generate

    更多

    https://www.jianshu.com/p/a2164e370e29

  • 相关阅读:
    http
    node 学习 http
    socket.io
    每日日报
    每日日报
    每日日报
    06人件读书笔记之一
    每日日报
    每日日报
    05程序员修炼之道:从小工到专家阅读笔记之三
  • 原文地址:https://www.cnblogs.com/theRhyme/p/11011076.html
Copyright © 2011-2022 走看看