各类正则表达式收集Java版

本文介绍了如何使用Java正则表达式进行手机号码、网址和银行卡号的匹配。通过正则表达式,可以方便地从文本中提取这些信息,例如,从HTML中抓取img标签的src属性以获取图片URL,以及根据银行卡号推断银行名称。
摘要由CSDN通过智能技术生成
qq正则表达式
package 正则表达式;  
/*对QQ号码进行校验 
要求5~15位,不能以0开头,只能是数字*/  
import java.util.regex.Matcher;  
import java.util.regex.Pattern;  
  
public class Test {  
  
    public static void main(String[] args) {  
        // TODO Auto-generated method stub  
          
        String qq = "23412312";  
        String regex = "[1-9][0-9]{4,14}";//第一位1-9之间的数字,第二位0-9之间的数字,数字范围4-14个之间  
        //String regex2 = "[1-9]\\d{4,14}";//此句也可以  
        boolean flag = qq.matches(regex);  
        if(flag)  
            System.out.println("QQ号正确");  
        else  
            System.out.println("QQ号错误");  
          
    }  
  
}  
身份证正则表达式
 public static boolean isIDNumber(String IDNumber) {
        if (IDNumber == null || "".equals(IDNumber)) {
            return false;
        }
        // 定义判别用户身份证号的正则表达式(15位或者18位,最后一位可以为字母)
        String regularExpression = "(^[1-9]\\d{5}(18|19|20)\\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\\d{3}[0-9Xx]$)|" +
                "(^[1-9]\\d{5}\\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\\d{3}$)";
        //假设18位身份证号码:41000119910101123X  410001 19910101 123X
        //^开头
        //[1-9] 第一位1-9中的一个      4
        //\\d{5} 五位数字           10001(前六位省市县地区)
        //(18|19|20)                19(现阶段可能取值范围18xx-20xx年)
        //\\d{2}                    91(年份)
        //((0[1-9])|(10|11|12))     01(月份)
        //(([0-2][1-9])|10|20|30|31)01(日期)
        //\\d{3} 三位数字            123(第十七位奇数代表男,偶数代表女)
        //[0-9Xx] 0123456789Xx其中的一个 X(第十八位为校验值)
        //$结尾

        //假设15位身份证号码:410001910101123  410001 910101 123
        //^开头
        //[1-9] 第一位1-9中的一个      4
        //\\d{5} 五位数字           10001(前六位省市县地区)
        //\\d{2}                    91(年份)
        //((0[1-9])|(10|11|12))     01(月份)
        //(([0-2][1-9])|10|20|30|31)01(日期)
        //\\d{3} 三位数字            123(第十五位奇数代表男,偶数代表女),15位身份证不含X
        //$结尾


        boolean matches = IDNumber.matches(regularExpression);

        //判断第18位校验值
        if (matches) {

            if (IDNumber.length() == 18) {
                try {
                    char[] charArray = IDNumber.toCharArray();
                    //前十七位加权因子
                    int[] idCardWi = {7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2};
                    //这是除以11后,可能产生的11位余数对应的验证码
                    String[] idCardY = {"1", "0", "X", "9", "8", "7", "6", "5", "4", "3", "2"};
                    int sum = 0;
                    for (int i = 0; i < idCardWi.length; i++) {
                        int current = Integer.parseInt(String.valueOf(charArray[i]));
                        int count = current * idCardWi[i];
                        sum += count;
                    }
                    char idCardLast = charArray[17];
                    int idCardMod = sum % 11;
                    if (idCardY[idCardMod].toUpperCase().equals(String.valueOf(idCardLast).toUpperCase())) {
                        return true;
                    } else {
                        System.out.println("身份证最后一位:" + String.valueOf(idCardLast).toUpperCase() + 
                                "错误,正确的应该是:" + idCardY[idCardMod].toUpperCase());
                        return false;
                    }

                } catch (Exception e) {
                    e.printStackTrace();
                    System.out.println("异常:" + IDNumber);
                    return false;
                }
            }

        }
        return matches;
    } 

手机号码正则表达式

/**
      * 验证手机号码
      *
      * 移动号码段:139、138、137、136、135、134、150、151、152、157、158、159、182、183、187、188、147、182
      * 联通号码段:130、131、132、136、185、186、145
      * 电信号码段:133、153、180、189、177
      *
      * @param cellphone
      * @return
      */
    public static boolean checkCellphone(String cellphone) {
        String regex = "^((13[0-9])|(14[5|7])|(15([0-3]|[5-9]))|(18[0,1,2,5-9])|(177))\\d{8}$";
        Pattern pattern=Pattern.compile(regex);
        Matcher matcher=pattern.matcher(cellphone);
        return matcher.matches();
    }

固定电话号码匹配:

/**
      * 验证固话号码
      * @param telephone
      * @return
      */
    public static boolean checkTelephone(String telephone) {
        String regex = "^(0\\d{2}-\\d{8}(-\\d{1,4})?)|(0\\d{3}-\\d{7,8}(-\\d{1,4})?)$";
        Pattern pattern=Pattern.compile(regex);
        Matcher matcher=pattern.matcher(telephone);
        return matcher.matches();
    }

匹配文本中的网址java正则表达式

[java] view plain copy print?
import java.util.regex.Matcher;  
import java.util.regex.Pattern;  
  
public class URLMatcher {  
    public static void main(String[] args) {  
        Pattern pattern = Pattern  
                .compile("(http://|ftp://|https://|www){0,1}[^\u4e00-\u9fa5\\s]*?\\.(com|net|cn|me|tw|fr)[^\u4e00-\u9fa5\\s]*");  
        // 空格结束  
        Matcher matcher = pattern  
                .matcher("随碟附送下载地址http://www.zuidaima.com/sdfsdf.htm?aaaa=%ee%sss ?sdfsyyy空格结束");  
        while (matcher.find()) {  
            System.out.println(matcher.group(0));  
        }  
  
        // 中文结束  
        matcher = pattern  
                .matcher("随碟附送下载地址http://www.zuidaima.com/sdfsdf.htm?aaaa=%ee%sss网址结束");  
        while (matcher.find()) {  
            System.out.println(matcher.group(0));  
        }  
  
        // 没有http://开头  
        matcher = pattern  
                .matcher("随碟附送下载地址www.zuidaima.com/sdfsdf.htm?aaaa=%ee%sss网址结束");  
        while (matcher.find()) {  
            System.out.println(matcher.group(0));  
        }  
  
        // net域名  
        matcher = pattern  
                .matcher("随碟附送下载地址www.xxx.net/sdfsdf.htm?aaaa=%ee%sss网址结束");  
        while (matcher.find()) {  
            System.out.println(matcher.group(0));  
        }  
  
        // xxx域名  
        matcher = pattern  
                .matcher("随碟附送下载地址www.zuidaima.xxx/sdfsdf.htm?aaaa=%ee%sss网址结束");  
        while (matcher.find()) {  
            System.out.println(matcher.group(0));  
        }  
  
        // yyyy域名匹配不到  
        System.out.println("匹配不到yyyy域名");  
        matcher = pattern  
                .matcher("随碟附送下载地址www.zuidaima.yyyy/sdfsdf.html?aaaa=%ee%sss网址结束");  
        while (matcher.find()) {  
            System.out.println(matcher.group(0));  
        }  
  
        // 没有http://www.  
        matcher = pattern  
                .matcher("随碟附送下载地址zuidaima.com/sdfsdf.html?aaaa=%ee%sss网址结束");  
        while (matcher.find()) {  
            System.out.println(matcher.group(0));  
        }  
  
    }  
}  

用户名正则式

  // 验证用户名 判断 用户名 6-16 不能包含中文 a-z 0-9 A-Z 不允许数字开头
        String userName = "";
        if (userName.matches("[a-zA-Z][\\w]{5,15}")) {

            System.out.println("匹配成功!");
        } else {
            System.out.println("匹配不成功!");

        }


邮箱正则式

// 邮箱
        // @出现一次 .最多2次
        String repx = "\\w+@([\\w]+[\\w-]*)(\\.[\\w]+[-\\w]*)+";
        String mail = "nvdiaosi@a.com.xx";
        if (youxiang.matches(repx)) {
            System.out.println("匹配成功");
        } else {
            System.out.println("匹配不成功!");

        }


去掉数字正则式表达

//去掉数字
        String str1 = "abc0sdfe9asdf7ba987dfasd876asdf1";
        String[] array = str1.split("[\\d]");
        for (String string : array) {
            System.out.println(string);
        }

    }

拆分正则表达式

public static void main(String[] args) {

        // 拆分
        String str = "-3233*23+2323/78";

        String[] arr = str.split("[-\\+\\*\\/]");
        for (String string : arr) {
            System.out.println(string);
        }


利用java抓取网页上的所有图片:

用两个正则表达式:

1、匹配html中img标签的正则:<img.*src=(.*?)[^>]*?>

2、匹配img标签中得src中http路径的正则:http:\"?(.*?)(\"|>|\\s+)


package org.swinglife.main;  
  
import java.io.File;  
import java.io.FileOutputStream;  
import java.io.InputStream;  
import java.net.URL;  
import java.net.URLConnection;  
import java.util.ArrayList;  
import java.util.List;  
import java.util.regex.Matcher;  
import java.util.regex.Pattern;  
  
/*** 
 * java抓取网络图片 
 * @author swinglife 
 * 
 */  
public class CatchImage {  
  
    // 地址  
    private static final String URL = "http://www.csdn.net";  
    // 编码  
    private static final String ECODING = "UTF-8";  
    // 获取img标签正则  
    private static final String IMGURL_REG = "<img.*src=(.*?)[^>]*?>";  
    // 获取src路径的正则  
    private static final String IMGSRC_REG = "http:\"?(.*?)(\"|>|\\s+)";  
  
      
    public static void main(String[] args) throws Exception {  
        CatchImage cm = new CatchImage();  
        //获得html文本内容  
        String HTML = cm.getHTML(URL);  
        //获取图片标签  
        List<String> imgUrl = cm.getImageUrl(HTML);  
        //获取图片src地址  
        List<String> imgSrc = cm.getImageSrc(imgUrl);  
        //下载图片  
        cm.Download(imgSrc);  
    }  
      
      
    /*** 
     * 获取HTML内容 
     *  
     * @param url 
     * @return 
     * @throws Exception 
     */  
    private String getHTML(String url) throws Exception {  
        URL uri = new URL(url);  
        URLConnection connection = uri.openConnection();  
        InputStream in = connection.getInputStream();  
        byte[] buf = new byte[1024];  
        int length = 0;  
        StringBuffer sb = new StringBuffer();  
        while ((length = in.read(buf, 0, buf.length)) > 0) {  
            sb.append(new String(buf, ECODING));  
        }  
        in.close();  
        return sb.toString();  
    }  
  
    /*** 
     * 获取ImageUrl地址 
     *  
     * @param HTML 
     * @return 
     */  
    private List<String> getImageUrl(String HTML) {  
        Matcher matcher = Pattern.compile(IMGURL_REG).matcher(HTML);  
        List<String> listImgUrl = new ArrayList<String>();  
        while (matcher.find()) {  
            listImgUrl.add(matcher.group());  
        }  
        return listImgUrl;  
    }  
  
    /*** 
     * 获取ImageSrc地址 
     *  
     * @param listImageUrl 
     * @return 
     */  
    private List<String> getImageSrc(List<String> listImageUrl) {  
        List<String> listImgSrc = new ArrayList<String>();  
        for (String image : listImageUrl) {  
            Matcher matcher = Pattern.compile(IMGSRC_REG).matcher(image);  
            while (matcher.find()) {  
                listImgSrc.add(matcher.group().substring(0, matcher.group().length() - 1));  
            }  
        }  
        return listImgSrc;  
    }  
  
    /*** 
     * 下载图片 
     *  
     * @param listImgSrc 
     */  
    private void Download(List<String> listImgSrc) {  
        try {  
            for (String url : listImgSrc) {  
                String imageName = url.substring(url.lastIndexOf("/") + 1, url.length());  
                URL uri = new URL(url);  
                InputStream in = uri.openStream();  
                FileOutputStream fo = new FileOutputStream(new File(imageName));  
                byte[] buf = new byte[1024];  
                int length = 0;  
                System.out.println("开始下载:" + url);  
                while ((length = in.read(buf, 0, buf.length)) != -1) {  
                    fo.write(buf, 0, length);  
                }  
                in.close();  
                fo.close();  
                System.out.println(imageName + "下载完成");  
            }  
        } catch (Exception e) {  
            System.out.println("下载失败");  
        }  
    }  
  
      
} 

根据银行卡号判断银行名称


#pragma mark - 根据银行卡号判断银行名称  
+ (NSString *)getBankName:(NSString*) cardId{  
    //发卡行.卡种名称  
    NSArray *bankName = @[@"邮储银行·绿卡通", @"邮储银行·绿卡银联标准卡", @"邮储银行·绿卡银联标准卡" , @"邮储银行·绿卡专用卡" , @"邮储银行·绿卡银联标准卡",@"邮储银行·绿卡(银联卡)" , @"邮储银行·绿卡VIP卡" , @"邮储银行·银联标准卡" , @"邮储银行·中职学生资助卡" , @"邮政储蓄银行·IC绿卡通VIP卡",@"邮政储蓄银行·IC绿卡通" , @"邮政储蓄银行·IC联名卡" , @"邮政储蓄银行·IC预付费卡" , @"邮储银行·绿卡银联标准卡" , @"邮储银行·绿卡通",@"邮政储蓄银行·武警军人保障卡" , @"邮政储蓄银行·中国旅游卡(金卡)" , @"邮政储蓄银行·普通高中学生资助卡" , @"邮政储蓄银行·中国旅游卡(普卡)",@"邮政储蓄银行·福农卡" , @"工商银行·牡丹运通卡金卡" , @"工商银行·牡丹运通卡金卡" , @"工商银行·牡丹运通卡金卡" , @"工商银行·牡丹VISA卡(单位卡)",@"工商银行·牡丹VISA信用卡" , @"工商银行·牡丹VISA卡(单位卡)" , @"工商银行·牡丹VISA信用卡" , @"工商银行·牡丹VISA信用卡" , @"工商银行·牡丹VISA信用卡",@"工商银行·牡丹VISA信用卡" , @"工商银行·牡丹运通卡普通卡" , @"工商银行·牡丹VISA信用卡" , @"工商银行·牡丹VISA白金卡" , @"工商银行·牡丹贷记卡(银联卡)",@"工商银行·牡丹贷记卡(银联卡)" , @"工商银行·牡丹贷记卡(银联卡)" , @"工商银行·牡丹贷记卡(银联卡)" , @"工商银行·牡丹欧元卡" , @"工商银行·牡丹欧元卡",@"工商银行·牡丹欧元卡" , @"工商银行·牡丹万事达国际借记卡" , @"工商银行·牡丹VISA信用卡" , @"工商银行·海航信用卡" , @"工商银行·牡丹VISA信用卡", @"工商银行·牡丹万事达信用卡" , @"工商银行·牡丹万事达信用卡" , @"工商银行·牡丹万事达信用卡" , @"工商银行·牡丹灵通卡" , @"工商银行·牡丹灵通卡",@"工商银行·牡丹灵通卡" , @"工商银行·牡丹灵通卡" , @"工商银行·牡丹灵通卡" , @"工商银行·牡丹万事达白金卡" , @"工商银行·牡丹灵通卡" , @"工商银行·牡丹灵通卡",@"工商银行·海航信用卡个人普卡" , @"工商银行·牡丹灵通卡" , @"工商银行·牡丹灵通卡" , @"工商银行·牡丹灵通卡" , @"工商银行·牡丹灵通卡" , @"工商银行·牡丹灵通卡", @"工商银行·牡丹灵通卡" , @"工商银行·牡丹灵通卡" , @"工商银行·牡丹灵通卡" , @"工商银行·牡丹灵通卡" , @"工商银行·牡丹灵通卡" , @"工商银行·牡丹灵通卡",@"工商银行·牡丹灵通卡" , @"工商银行·牡丹灵通卡" , @"工商银行·牡丹灵通卡" , @"工商银行·牡丹灵通卡" , @"工商银行·牡丹灵通卡" , @"工商银行·牡丹灵通卡",@"工商银行·牡丹灵通卡" , @"工商银行·牡丹灵通卡" , @"工商银行·牡丹灵通卡" , @"工商银行·牡丹灵通卡" , @"工商银行·牡丹灵通卡" , @"工商银行·牡丹灵通卡",@"工商银行·牡丹灵通卡" , @"工商银行·牡丹灵通卡" , @"工商银行·牡丹灵通卡" , @"工商银行·牡丹灵通卡" , @"工商银行·牡丹灵通卡" , @"工商银行·牡丹灵通卡",@"工商银行·牡丹灵通卡" , @"工商银行·牡丹灵通卡" , @"工商银行·牡丹灵通卡" , @"工商银行·牡丹灵通卡" , @"工商银行·牡丹灵通卡" , @&
JavaScript正则表达式Java正则表达式在语法上有一些差异,但是它们的基本概念和用法是相似的。下面是将JavaScript正则表达式转换为Java正则表达式的一些常见规则: 1. 语法差异: - JavaScript正则表达式使用斜杠(/)作为定界符,而Java正则表达式使用双引号(")作为定界符。 - JavaScript正则表达式中的特殊字符需要进行转义,而Java正则表达式中的特殊字符不需要转义。 2. 字符类: - JavaScript正则表达式中的字符类使用方括号([])表示,而Java正则表达式中使用方括号([])或者Unicode转义(\p{...})表示。 - JavaScript正则表达式中的字符类可以使用连字符(-)表示范围,而Java正则表达式中需要使用Unicode转义(\uXXXX)表示范围。 3. 量词: - JavaScript正则表达式中的量词使用花括号({})表示,而Java正则表达式中使用花括号({})或者问号(?)表示。 - JavaScript正则表达式中的贪婪量词默认是贪婪模式,而Java正则表达式中的贪婪量词需要在后面添加问号(?)来表示非贪婪模式。 4. 边界匹配: - JavaScript正则表达式中的边界匹配使用插入符号(^)和美元符号($)表示,而Java正则表达式中使用\A和\Z表示。 5. 其他差异: - JavaScript正则表达式中的捕获组使用圆括号(())表示,而Java正则表达式中使用圆括号(())或者方括号([])表示。 - JavaScript正则表达式中的反向引用使用反斜杠加数字(\1、\2等)表示,而Java正则表达式中使用美元符号加数字($1、$2等)表示。 以上是一些常见的JavaScript正则表达式转换为Java正则表达式的规则。具体转换时,还需要根据具体的正则表达式进行适当的调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值