定制开发38、Java 中的正则表达式(单字符匹配和预定义字符)

文章目录

一、需求

❓ 定制开发现有一个字符串,定制开发需满足如下要求:
[6, 18] 个字符
② 定制开发只能包含字母、数字、下划线
③ 定制开发需以字母开头
❓ 如果字符串满足上述要求,返回 true,否则返回 false

   public static boolean validString(String s) {       return s.matches("[a-zA-Z][a-zA-Z0-9_]{5,17}");   }
  • 1
  • 2
  • 3

🍀 正则表达式用极简的规则取代了复杂的验证逻辑
🍀 Regex Expression
🍀 正则表达式是一种通用的技术,适用于多种编程语言

二、单字符匹配(6个)

✏️ ① [abc]:字符串的某个位置(某一个字符)满足 a、b、c 中的一个

🍀 某个位置:该【单字符匹配】放的位置

public class TestDemo {    public static void main(String[] args) {        String regex = "[zgq]";        System.out.println("z".matches(regex)); // true        System.out.println("g".matches(regex)); // true        System.out.println("q".matches(regex)); // true        System.out.println("zgq".matches(regex)); // false    }}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
public class TestDemo {    public static void main(String[] args) {        String regex = "26[abc]3q";        System.out.println("26a3q".matches(regex)); // true        System.out.println("26abc".matches(regex)); // false        System.out.println("26b3q".matches(regex)); // true     }}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

✏️ ② [^abc]:除了 a、b、c 之外的任意单个字符

public class TestDemo {    public static void main(String[] args) {        String regex = "[^cat]666";        System.out.println("c666".matches(regex)); // false        System.out.println("a666".matches(regex)); // false        System.out.println("t666".matches(regex)); // false        System.out.println("bb666".matches(regex)); // false        System.out.println("b666".matches(regex)); // true    }}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
public class TestDemo {    public static void main(String[] args) {        String regex1 = "[12345]666";        String regex2 = "[^1-5]666";        System.out.println("1666".matches(regex1)); // true        System.out.println("3666".matches(regex1)); // true        System.out.println("5666".matches(regex1)); // true        System.out.println("6666".matches(regex1)); // false        System.out.println("1666".matches(regex2)); // false        System.out.println("3666".matches(regex2)); // false        System.out.println("5666".matches(regex2)); // false        System.out.println("6666".matches(regex2)); // true    }}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

✏️ ③ [a-zA-z]:匹配单个英文字母

public class TestDemo {    public static void main(String[] args) {        String regex = "[a-zA-Z]666";        System.out.println("6666".matches(regex)); // false        System.out.println("b666".matches(regex)); // true    }}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

✏️ ④ [a-d[1-6]]:和 [a-d1-6] 一样()

public class TestDemo {    public static void main(String[] args) {        String regex1 = "[a-d[1-6]]";        String regex2 = "[a-d1-6]";        System.out.println("a".matches(regex1)); // true        System.out.println("e".matches(regex1)); // false        System.out.println("1".matches(regex1)); // true        System.out.println("7".matches(regex1)); // false        System.out.println("a".matches(regex2)); // true        System.out.println("e".matches(regex2)); // false        System.out.println("1".matches(regex2)); // true        System.out.println("7".matches(regex2)); // false    }}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

✏️ ⑤ [zgq&&[god]]:交集

public class TestDemo {    public static void main(String[] args) {        String regex1 = "[zgq&&[god]]";        System.out.println("q".matches(regex1)); // false        System.out.println("d".matches(regex1)); // false        System.out.println("g".matches(regex1)); // true    }}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

✏️ ⑥ [zgq&&[god]]:取差集

public class TestDemo {    public static void main(String[] args) {        String regex1 = "[zgq&&[^god]]";        System.out.println("q".matches(regex1)); // true        System.out.println("d".matches(regex1)); // false        System.out.println("g".matches(regex1)); // false        System.out.println("z".matches(regex1)); // true        // 取差集, 从字母 a 到字母 z 中去除字母 b 和 d        String regex2 = "[a-z&&[^bd]]";        System.out.println("d".matches(regex2)); // false        System.out.println("a".matches(regex2)); // true    }}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

三、预定义字符(7个)

预定义字符匹配的仍然是单个字符

📝 【.】:任意单个字符
📝 【\d】:数字
📝 【\D】:非数字
📝 【\s】:空白
📝 【\S】:非空白
📝 【\w】:字母(英文字母、下划线、数字)
📝 【\W】:非英文字母

🍀 Java 中需以两个【\】开头表示预定义字符

public class TestDemo {    public static void main(String[] args) {        String r1 = ".";        System.out.println("@".matches(r1)); // true        System.out.println("庆".matches(r1)); // true        System.out.println("I".matches(r1)); // true        System.out.println(" ".matches(r1)); // true        System.out.println(".".matches(r1)); // true    }}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
public class TestDemo {    public static void main(String[] args) {        // 匹配 java 文件        String r1 = ".\\.java";        System.out.println("a.java".matches(r1)); // true        System.out.println("xjava".matches(r1)); // false        System.out.println("5java".matches(r1)); // false    }}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
public class TestDemo {    public static void main(String[] args) {        String r1 = "[abc]";        String r2 = "\\[abc\\]";        System.out.println("a".matches(r1)); // true        System.out.println("c".matches(r1)); // true        System.out.println("[abc]".matches(r1)); // false        System.out.println("a".matches(r2)); // false        System.out.println("c".matches(r2)); // false        System.out.println("[abc]".matches(r2)); // true    }}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

结束!如有错误,请不吝赐教

网站建设定制开发 软件系统开发定制 定制软件开发 软件开发定制 定制app开发 app开发定制 app开发定制公司 电商商城定制开发 定制小程序开发 定制开发小程序 客户管理系统开发定制 定制网站 定制开发 crm开发定制 开发公司 小程序开发定制 定制软件 收款定制开发 企业网站定制开发 定制化开发 android系统定制开发 定制小程序开发费用 定制设计 专注app软件定制开发 软件开发定制定制 知名网站建设定制 软件定制开发供应商 应用系统定制开发 软件系统定制开发 企业管理系统定制开发 系统定制开发