银行卡正则表达式Java java正则表达式写法

您所在的位置:网站首页 叠词的格式是怎么写的一个写两个怎么写 银行卡正则表达式Java java正则表达式写法

银行卡正则表达式Java java正则表达式写法

2023-05-21 16:46| 来源: 网络整理| 查看: 265

正则表达式,又称规则表达式。(英文名Regular Expression,所以代码中常以regex、regexp、RE表示)。

正则表达式简单说就是用于操作文本数据的规则表达式,在Java中我们使用正则表达式来对字符串进行“有规则的操作”,没理解没关系,看下面的练习就懂了。

正则表达式对字符串的常见操作:字符串的匹配、切割、替换、获取。

正则表达式语法(匹配规则)

 

字符串的匹配:matches()

用法:

/*常用写法*/ 1. boolean b = Pattern.matches("正则表达式", "匹配内容"); /*标准写法*/ 2.Pattern p = Pattern.compile("正则表达式"); Matcher m = p.matcher("匹配内容"); boolean b = m.matches(); /*语句匹配写法*/ 3.if(/^a*b$/.text("aaab")) {};

举例练习:

1.判断输入的字符串是否为合法手机号码。

public class regexTest { public static void main(String[] args) { String p1 = "15845678908"; String p2 = "173438576288"; boolean b1 = isphone_num(p1); boolean b2 = isphone_num(p2); System.out.println(p1+"是电话号码吗?"+b1); System.out.println(p2+"是电话号码吗?"+b2); } //匹配方法(以1开头第二位必须是3/5/7/8的11位纯数字组成) public static boolean isphone_num(String num) { //定义匹配规则: String regex = "1[3578][0-9]{9}"; //判断是否符合规则 boolean b = num.matches(regex); return b; } }

结果:

银行卡正则表达式Java java正则表达式写法_字符串

2.判断邮箱是否为正确格式。

public class regexTest { public static void main(String[] args) { String p1 = "[email protected]"; String p2 = "ghtr343com"; String p3 = "[email protected]"; boolean b1 = isemail(p1); boolean b2 = isemail(p2); boolean b3 = isemail(p3); System.out.println(p1+"是否为邮箱格式?"+b1); System.out.println(p2+"是否为邮箱格式?"+b2); System.out.println(p3+"是否为邮箱格式?"+b3); } //匹配方法(以几个字母或数字开头 + @ +字母数字+.+字母) public static boolean isemail(String email) { //定义匹配规则: String regex = "[a-z0-9]+@[a-zA-Z0-9]+\\.[a-zA-Z]+"; //判断是否符合规则 boolean b = email.matches(regex); return b; } }

结果:

银行卡正则表达式Java java正则表达式写法_字符串_02

3.判断身份证号码是否为正确格式

xxxxxx    yy MM dd    25 0     15位(第一代身份证,2004年之前)

xxxxxx yyyy MM dd 725 0     18位(第二代身份证)

地区: [1-9]\d{5}

年的前两位: (18|19|([23]\d))            1800-2399

年的后两位: \d{2}

月份: ((0[1-9])|(10|11|12)) 

天数: (([0-2][1-9])|10|20|30|31)          闰年不能禁止29+

三位顺序码: \d{3}

两位顺序码: \d{2}

校验码: [0-9Xx]

//身份证正则表达式(15位) isIDCard1="^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$ " //身份证正则表达式(18位) isIDCard2="^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{4}$ "字符串切割:split()

对字符串进行切割就是对一个字符串按照某个或某些字符进行切割,从而变成若干字符串,切割的实质其实就是先进行字符串匹配,将匹配到的字符串“丢弃”,并将丢掉的前面部分和剩下的部分变成字符串数组。

用法:

String str = "需要切割的字符串"; //描述切割规则 String regex = "正则表达式"; //切割后的字符串仍是字符串: String sstr1 = str.split(regex); //切割后的字符串放在数组中: String[] sstr2 = str.split(regex);

举例练习:

对字符串“哈哈##呵呵###哦哦#”进行切割,去掉#符号。

public class splitTest { public static void main(String[] args) { String s = "哈哈##呵呵###哦哦#"; //描述切割规则:以若干#来切割 String regex = "#+"; //切割后的字符串数组: String[] sstr1 = s.split(regex); for(String string:sstr1){ System.out.print(string); } } }

结果: 

银行卡正则表达式Java java正则表达式写法_System_03

拓展:叠词切割 String regex = "(.)\\1+",这里用到了组的概念。

字符串替换:replaceAll()

利用正则表达式进行字符串替换其实是先匹配指定字符串中的字符,然后再用自定义字符替换掉匹配到的字符串。 

用法:

String str = "需要替换的字符串"; //匹配规则 String regex = "正则表达式"; String Str = str.replaceAll(regex, "替换内容");

举例练习:

对字符串“哈喽##你好###大聪明”进行字符替换,把"#"替换成"、"。

public class replaceAllTest { public static void main(String[] args) { String str = "哈喽##你好###大聪明"; //匹配规则 String regex = "(.)\\1+"; //替换为: String newStr = str.replaceAll(regex, "、"); //替换后结果: System.out.println(newStr); } }

 结果:

银行卡正则表达式Java java正则表达式写法_字符串_04

拓展:替代叠词 regex = "(.)\\1+";  String str2 = str1.replaceAll(regex, "$1");//多个重复只留一个

字符串获取:group()

正则表达式其实是封装成了Pattern类,所以字符串的匹配、切割、替换都是调用了Pattern类中的方法。所以如果我们需要获取指定字符串中的子串,首先同样的我们需要进行字符串匹配,然后判断指定字符串中是否有匹配的子串,有就获取,没有就获取不到。

获取子串的步骤:

  1、描述要获取的子串:匹配子串

  2、使用正则表达式的封装类Pattern来获取匹配器

  3、使用匹配器中的方法group()获取字符串的匹配的子串

举例练习:

1、获取字符串“Hi ! welcome to my blog haha”中为两个字母的单词.

import java.util.regex.Matcher; import java.util.regex.Pattern; public class groupTest { public static void main(String[] args) { String s = "Hi ! welcome to my blog haha"; //1、匹配子串 String regex = "\\b[a-zA-Z]{2}\\b"; //2、获取匹配器 Pattern p = Pattern.compile(regex); Matcher m = p.matcher(s); //3、使用匹配器的group()方法来获取:(find方法是判断是否具有匹配子串)、 System.out.println("”"+s+"“中的两个字母的单词有:"); while(m.find()){ System.out.println(m.group()); } }

 结果:

银行卡正则表达式Java java正则表达式写法_System_05

匹配规则

银行卡正则表达式Java java正则表达式写法_字符串_06

 

 

 

 

银行卡正则表达式Java java正则表达式写法_字符串_06

 

银行卡正则表达式Java java正则表达式写法_字符串_06

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3