`
qq466862016
  • 浏览: 125717 次
  • 来自: 杭州
社区版块
存档分类
最新评论

身份证号码正则截取生日golang和java实现

阅读更多

身份证号码正则截取生日golang和java实现

身份证分为一代身份证和二代身份证,一代身份证为15位、二代身份证为18位。

举例一代身份证:130503670401001

二代身份证:41140219891216321

 

一代身份证正则截取:^(\d{6})(\d{6})(.*)$

二代身份证正则截取: ^(\d{6})(\d{8})(.*)$

 

 

下面分别设java和golang的截取实现

 

package spring;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * Created by banxia on 16/6/20.
 */
public class Test {


    public static  void  main(String[] args){


      //  String str = "411402198912166321";
         String str = "130503670401001";
        // ^(\d{6})(\d{8})(.*)      18位
        //^(\d{6})(\d{6})(.*)       15位
        Pattern pattern = Pattern.compile("^(\\d{6})(\\d{6})(.*)");

        Matcher matcher = pattern.matcher(str);
        if (matcher.find()) {


            String group = matcher.group(2);
            System.out.print(group);

        }


    }
}

 

package main

import (


)
import (
	"regexp"
	"fmt"
)

func main() {


var str string = "411402198912166321"

	reg,err :=  regexp.Compile("^(\\d{6})(\\d{8})(.*)")

	if err != nil {
		return
	}

	if reg.MatchString(str) == true {
		submatch := reg.FindStringSubmatch(str)
		fmt.Println(submatch)
		fmt.Println("date is ",submatch[2])
	}




}

 

 

1
1
分享到:
评论
3 楼 worldcbf 2016-06-28  
ximinjie 写道
advantech 写道
截个生日还用正则表达式?我也是醉了。不管一代证还是二代证,从第六位开始就是出生日期。只不过根据一代证还是二代证substring一下就完事了。

java中substring比正则效率低,数据量大的时候非常明显。

java中substring比正则效率低 这个结论怎么得出来的呢?
2 楼 ximinjie 2016-06-21  
advantech 写道
截个生日还用正则表达式?我也是醉了。不管一代证还是二代证,从第六位开始就是出生日期。只不过根据一代证还是二代证substring一下就完事了。

java中substring比正则效率低,数据量大的时候非常明显。
1 楼 advantech 2016-06-20  
截个生日还用正则表达式?我也是醉了。不管一代证还是二代证,从第六位开始就是出生日期。只不过根据一代证还是二代证substring一下就完事了。

相关推荐

Global site tag (gtag.js) - Google Analytics