Java正则表达式详解

简介: Java正则表达式简单示例

 一、什么是正则表达式

正则表达式是一组公式,是描述一种字符串匹配的格式。

正则表达式通常被用于判断语句中,用来检查某一字符串是否满足某一格式。。我们可以调用String中的matches(String regex)方法,判断字符串是否匹配给定的正则表达式,返回布尔值。

示例:

str.matches("[a-z]") 表示字符串是否是小写字母a-z中的某一字母

二、正则表达式元字符

正则表达式是含有一些具有特殊意义字符的字符串,这些特殊字符称为正则表达式的元字符。例如,"\\d" 表示数0~9中的任何一个,"\\d" 就是元字符。

元字符 正则表达式中的写法 意义
. "." 代表任意一个字符
\\d "\\d" 代表0~9的任何一个数字
\D "\\D" 代表任何一个非数字字符
\s "\\s" 代表空白字符,如“\t”、“\n”
\S "\\S" 代表非空白字符
\w "\\w" 代表可用做标识符的字符,但不包括“$”
\W "\\W" 代表不可用于标识符的字符
\p{Lower} \p{Lower} 代表小写字母a~z
\p{Upper} \p{Upper} 代表大写字母A~Z
\p{ASCII} \p{ASCII} ASCII字符
\p{Alpha} \p{Alpha} 字母字符
\p{Digit} \p{Digit} 十进制数字,即0~9
\p{Alnum} \p{Alnum} 数字或字母字符
\p{Punct} \p{Punct} 标点符号:!"#$%'()+,-./:;<=>?@[\]^_`{|}~
\p{Graph} \p{Graph} 可见字符:[\p{Alnum\p{Punct}}]
\p{Print} \p{Print} 可打印字符:[\p{Graph}\X20]
\p{Blank} \p{Blank} 空格或制表符:[\t]
\p{Cntrl} \p{Cntrl} 控制字符:[\x00-\x1F\x7F]

三、正则表达还是元字符使用方法

在正则表达式中可以使用方括号括起来若干个字符来表示一个元字符,该元字符可代表方括号中的任何一个字符。

例如,reg=“[abc]4”,这样字符串“a4”、“b4”、·“c4”都是和正则表达式匹配的字符串。除此之外还有很多格式。如:

[^456]:代表4、5、6之外的任何字符。

[a-r]:代表a~r中的任何一个字母。

[a-zA-Z]:可表示任意一个英文字母。

[a-e[g-z]]:代表a~e,或g~z中的任何一个字母(并运算)。

[a-o&&[def]]:代表字母d、e、f(交运算)。

[a-d&&[^bc]]:代表字母a、d(差运算)。

 (ab)|(13)|(50):代表”ab”、”13”、”50”中任意一值。

四、正则表达式限定符

在正则表达式中允许使用限定修饰符来限定元字符出现的次数。例如,"A*"代表A可在字符串中出现0次或多次。

限定修饰符 意义 示例
0次或1次 A?
* 0次或多次 A*
+ 一次或多次 A+
{n} 正好出现n次 A{2}
{n,} 至少出现n次 A{3,}
{n,m} 出现n次到m次 A{2,6}

正则表达式实例使用正则表达式来判断指定的变量是否是合法的E-mail地址。

设计思路:

[邮箱名]     @  [服务器名称]  [中间名] .  [后缀]
合法字符串@  合法字符串. 字符串(可无). 字符串(最大三个字符)

 \\w+         @    \\w+       \\.*\\w{2,3}*   \\.      \\w{2,3}

五、正则表达式示例

验证字符串是不是大陆手机号,大陆手机号是11位,前三位分别是130、131、132、133、134、134、135、136、137、138、139、150、151、152、153、155、156、157、158、159、180、185、186、187、188、189等

代码:

import java.util.Scanner;
public class lianxi {
  public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    System.out.println("请输入手机号:");
    String regex = "(13[0-9]|15[012356789]|18[056789])\\d{8}";
    while (true) {
      String phone = sc.nextLine();
      if (phone.matches(regex)) {
        System.out.println("您输入的是手机号");
      } else {
        System.out.println("您输入的不是手机号");
      }
    }
  }
}

image.gif

运行结果:


image.png




目录
相关文章
|
2天前
|
Java 开发者
Java中的Lambda表达式:简化你的代码之旅
【8月更文挑战第17天】 在编程的海洋中,简洁是航行的风帆。Lambda表达式,作为Java 8的一大亮点,为开发者提供了一种更为紧凑、易读的编码方式。本篇文章将带你领略Lambda表达式的魅力,从基础概念到实际应用,让你的代码像诗句一样流畅。
12 4
|
11天前
|
存储 算法 Oracle
19 Java8概述(Java8概述+lambda表达式+函数式接口+方法引用+Stream+新时间API)
19 Java8概述(Java8概述+lambda表达式+函数式接口+方法引用+Stream+新时间API)
38 8
|
11天前
|
Java API 开发者
Java中的Lambda表达式:简化代码的现代方法
Lambda表达式,这一Java 8引入的特性,为开发者提供了一种更加紧凑、易读的编码风格。本文将深入探讨Lambda表达式的概念、使用场景以及它如何改变我们处理集合、线程和函数式接口的方式,旨在帮助读者理解并有效利用Lambda表达式来优化他们的Java代码。
|
7天前
|
并行计算 Java 程序员
探索Java中的Lambda表达式
在Java 8中,引入了Lambda表达式,这一特性极大地简化了代码,提高了开发效率。本文将通过浅显易懂的语言和生动的比喻,带你一步步了解Lambda表达式的魅力所在,从基础语法到实际应用,让你轻松掌握这一强大的工具。
17 1
|
11天前
|
Java API 开发者
探索Java中的Lambda表达式和函数式接口
【8月更文挑战第8天】 在Java 8中引入的Lambda表达式,不仅简化了代码编写,也提高了程序的可读性和性能。本文将深入探讨Lambda表达式的工作原理以及如何通过函数式接口来实现更简洁、高效的编程模式。
|
12天前
|
并行计算 Java API
Java中的Lambda表达式:简化代码的现代工具
在Java 8中引入的Lambda表达式,为函数式编程范式铺平了道路,提供了一种更简洁、更灵活的编写匿名方法的方式。本文将深入探讨Lambda表达式如何优化代码结构,提高开发效率,并通过具体示例展示其在实际应用中的魔力。
24 3
|
12天前
|
算法 Java API
探索Java中的Lambda表达式:简化代码,提升可读性
Lambda表达式,这一现代编程语言的闪亮特性,在Java 8中首次亮相,为开发者提供了一种更加紧凑、易读的编写匿名函数的方式。本文将深入解析Lambda表达式如何优化我们的代码结构,提高开发效率,并探讨其在多线程编程中的应用。我们将通过具体示例,展示Lambda表达式的魅力,帮助读者更好地理解和运用这一强大的工具。
27 2
|
12天前
|
Java API 开发者
Java的变革风暴:Lambda表达式与函数式编程如何颠覆你的代码世界
【8月更文挑战第7天】Java 8引入了Lambda表达式和函数式编程,显著增强了代码的简洁性和可读性。Lambda表达式作为匿名函数,简化了集合操作和事件处理等场景。其基本语法包括参数、箭头及表达式主体。结合Java 8的Stream API,开发者能以声明式风格处理数据,如筛选和转换集合,无需显式循环或条件判断,使得代码更清晰、高效。这些新特性丰富了Java的编程模型,提升了开发效率,并有助于代码的维护。
20 1
|
18天前
|
Java 程序员 API
探索Java中的Lambda表达式
【8月更文挑战第1天】Lambda表达式在Java 8中引入,为函数式编程提供了强大的支持。本文将深入探讨Lambda表达式的语法、使用场景以及性能考量,并通过示例代码展示其实际应用。
12 3