美文网首页
JAVA之正则表达式

JAVA之正则表达式

作者: 你需要一台永动机 | 来源:发表于2018-09-07 16:12 被阅读34次

    JAVA之正则表达式

    正则表达式是一种可以用于模式匹配和替换的规范,一个正则表达式就是由普通的字符(例如字符a到z)以及特殊字符(元字符)组成的文字模式,它 用以描述在查找文字主体时待匹配的一个或多个字符串。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。

    正则表达式语法

    元字符 描述
    \ 转义字符,例如"\n"匹配"\n"
    ^ 正则表达式的开头标志
    $ 正则表达式的结尾标志
    * 匹配零次或多次
    + 匹配一次或多次
    ? 匹配一次或零次
    . 匹配任意字符
    {n} 匹配n次
    {n,} 至少匹配n次
    {n,m} n<=m,最少匹配n次,最多匹配m次
    x|y| 匹配x或y
    [xyz] 字符集合。匹配所包含的任意一个字符
    [^xyz] 负值字符集合。匹配未包含的任意字符
    [a-z] 字符范围。匹配指定范围内的任意字符
    [^a-z] 负值字符范围。匹配任何不在指定范围内的任意字符
    [a-zA-Z] 匹配a到z或Z
    [a-z&&[^bc]] 匹配除了b和c之外的a到z的字符
    \d 数字:[0-9]
    \D 非数字: [^0-9]
    \s 空白字符:[ \t\n\x0B\f\r]
    \S 非空白字符:[^\s]
    \w 单词字符:[a-zA-Z_0-9]
    \W 非单词字符:[^\w]
    \b 单词边界
    \B 非单词边界
    \A 输入的开头
    \G 上一个匹配的结尾
    \Z 输入的结尾,仅用于最后的结束符(如果有的话)
    \z 输入的结尾
    备注1:?

    当该字符紧跟在任何一个其他限制符(*,+,?,{n},{n,},{n,m})后面时,匹配模式是非贪婪的。非贪婪模式尽可能少的匹配所搜索的字符串,而默认的贪婪模式则尽可能多的匹配所搜索的字符串。例如,对于字符串“oooo”,“o+?”将匹配单个“o”,而“o+”将匹配所有“o”。

    备注2:\b
    p("hello sir".matches("^h[a-z]{1,3}o\\b.*"));//true
    p("hellosir".matches("^h[a-z]{1,3}o\\b.*"));//false
    

    例子

    场景 正则
    一个或多个汉字 ^[\u0391-\uFFE5]+$
    邮政编码 ^[1-9]\d{5}$
    QQ号码 ^[1-9]\d{4,10}$
    邮箱 ^[a-zA-Z_]{1,}[0-9]{0,}@(([a-zA-z0-9]-*){1,}.){1,3}[a-zA-z-]{1,}$
    用户名(字母开头 + 数字/字母/下划线) ^[A-Za-z][A-Za-z1-9_-]+$
    手机号码 ^1[3|4|5|8][0-9]\d{8}$
    URL ^((http|https)://)?([\w-]+.)+[\w-]+([\w-.?%&=]*)?$
    18位身份证号 ^(\d{6})(18|19|20)?(\d{2})([01]\d)([0123]\d)(\d{3})(\d|X|x)?$

    代码

    public static void main(String[] args) {
        // 要验证的字符串
        String str = "service@xsoftlab.net";
        // 邮箱验证规则
        String regEx = "[a-zA-Z_]{1,}[0-9]{0,}@(([a-zA-z0-9]-*){1,}\\.){1,3}[a-zA-z\\-]{1,}";
        // 编译正则表达式
        Pattern pattern = Pattern.compile(regEx);
        // 忽略大小写的写法
        // Pattern pat = Pattern.compile(regEx, Pattern.CASE_INSENSITIVE);
        Matcher matcher = pattern.matcher(str);
        // 字符串是否与正则表达式相匹配
        boolean rs = matcher.matches();
        System.out.println(rs);
    }
    

    相关文章

      网友评论

          本文标题:JAVA之正则表达式

          本文链接:https://www.haomeiwen.com/subject/nmvcgftx.html