Java编程中通用的正则表达式(一)

        正则表达式(Regular Expression,简称RegEx),又称常规表示法、正则表示、正规表示式、规则表达式、常式、表达式等,是计算机科学中的一个概念。正则表达式是用于描述某种特定模式的字符序列,特别是用来匹配、替换或验证字符串。在很多程序设计语言中都有对正则表达式的支持,常用于字符串操作、输入验证、文本处理等方面。

1、判断字符串是否是邮箱

        在Java中可以使用正则表达式来判断一个字符串是否是邮箱。以下为示例代码:

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

public class EmailValidator {

    private static final String EMAIL_REGEX = "^[\\w.-]+@([\\w\\-]+\\.)+[A-Z]{2,4}$";

    public static boolean isValidEmail(String email) {
        Pattern pattern = Pattern.compile(EMAIL_REGEX, Pattern.CASE_INSENSITIVE);
        Matcher matcher = pattern.matcher(email);
        return matcher.matches();
    }

    public static void main(String[] args) {
        String email1 = "test@example.com";
        String email2 = "test.example@com";
        System.out.println(email1 + " is valid? " + isValidEmail(email1));
        System.out.println(email2 + " is valid? " + isValidEmail(email2));
    }
}

输出结果为:

test@example.com is valid? true
test.example@com is valid? false

2、判断字符串是否是手机号

public boolean isPhoneNumber(String str) {
    String pattern = "^1[3-9]\\d{9}$"; // 手机号正则表达式
    return str.matches(pattern);
}

        这个方法接收一个字符串参数,并返回一个布尔值,如果字符串符合手机号的格式,则返回 true;否则返回 false。其中,^1[3-9]\d{9}$ 是一个表示手机号的正则表达式,其中:

  • ^ 表示匹配字符串的开头
  • 1 表示手机号的第一位为 1
  • [3-9] 表示第二位为 3-9 中的任意一个数字
  • \d{9} 表示后面连续的 9 个数字
  • $ 表示匹配字符串的结尾

该正则表达式可以匹配国内主流的手机号格式,包括以 13、14、15、16、17、18、19 开头的手机号码。

3、判断字符串是否是字母数字

        可以使用Java中的正则表达式匹配函数 matches(),配合正则表达式 [a-zA-Z0-9]+ 来判断字符串是否仅由字母和数字组成。

示例代码:

String str = "Abc123";
if(str.matches("[a-zA-Z0-9]+")){
    System.out.println("该字符串仅由字母和数字组成");
}else{
    System.out.println("该字符串不仅由字母和数字组成");
}

        上述代码中,matches()函数接收一个正则表达式作为参数,该正则表达式中包含 [a-zA-Z0-9]+,表示匹配由字母和数字组成的字符串,如果匹配成功,则返回 true,否则返回 false。

4、判断字符串是否是链接

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

public class LinkChecker {
    public static boolean isLink(String str) {
        Pattern pattern = Pattern.compile("^(http|https)://[a-zA-Z0-9\\-\\.]+\\.[a-zA-Z]{2,3}(/\\S*)?$");
        Matcher matcher = pattern.matcher(str);
        return matcher.matches();
    }

    public static void main(String[] args) {
        String link1 = "https://www.google.com/";
        String link2 = "www.google.com";
        String link3 = "https://www.google.com/search?q=java";
        
        System.out.println(isLink(link1));  // true
        System.out.println(isLink(link2));  // false
        System.out.println(isLink(link3));  // true
    }
}
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/230042.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

软件工程复习

一、题型 单项选择题 20分 填空题 10分 判断题 10分 简答题 18分 应用题 12分 综合题 30分 软件程序数据文档 软件是无形的、不可见的逻辑实体 20世纪60年代末爆发软件危机 软件危机是指软件在开发与维护过程中遇到的一系列严重的问题 …

Mint Blockchain,一个聚焦在 NFT 领域的 L2 网络

Mint 是什么? Mint 是一个聚焦在 NFT 领域的创新型 L2 网络。Mint Blockchain 致力于促进 NFT 资产协议标准的创新和现实商业场景中 NFT 资产的大规模采用。 不管是过去 3 年在以太坊网络涌现的 NFT,还是当下在比特币网络活跃的“铭文” NFT&#xff0c…

持续集成和持续交付

引言 CI/CD 是一种通过在应用开发阶段引入自动化来频繁向客户交付应用的方法。CI/CD 的核心概念是持续集成、持续交付和持续部署。作为一种面向开发和运维团队的解决方案,CI/CD 主要针对在集成新代码时所引发的问题(亦称:“集成地狱”&#…

leetcode面试经典150题——35 螺旋矩阵

题目: 螺旋矩阵 描述: 给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。 示例: 输入:matrix [[1,2,3],[4,5,6],[7,8,9]] 输出:[1,2,3,6,9,8,7,4,5] 提示&…

大数据技术4:Lambda和Kappa架构区别

前言:在大数据处理领域,两种突出的数据架构已成为处理大量数据的流行选择:Lambda 架构和 Kappa 架构。这些架构为实时处理和批处理提供了强大的技术解决方案,使组织能够从其数据中获得有价值的见解。随着互联网时代来临&#xff0…

免费的网页数据抓取工具有哪些?【2024附下载链接】

在网络上,有许多网页数据抓取工具可供选择。本文将探讨其如何全网采集数据并支持指定网站抓取。我们将比较不同的数据采集工具,帮助您找到最适合您需求的工具。 网页数据抓取工具种类 在选择网页数据抓取工具之前,让我们先了解一下这些工具…

MindOpt APL:一款适合优化问题数学建模的编程语言

什么是建模语言 建模语言是一种描述信息或模型的编程语言,在运筹优化领域,一般是指代数建模语言。 比如要写一个线性规划问题的建模和求解,可以采用C、Python、Java等通用编程语言来实现计算机编程(码代码)&#xff0…

企业博客SEO:优化SOP,助您提升搜索引擎可见性

企业博客是互联网时代企业与用户沟通的重要渠道之一,引流成本也比较低。然而,依然有企业会处在3种状态: 1. 有博客,但内容更新不积极或搁置 2. 有博客,但内容散乱 3. 根本就没有博客 如果是这几种状态,…

ELK(六)—Filebeat安装部署

目录 一、介绍1.1特点1.2使用原因1.3结构图1.4工作流程 二、安装部署2.1下载2.2启动2.3监控日志文件2.4自定义字段 三、连接Elasticsearch四、工作原理 一、介绍 Filebeat是一个轻量级的日志和文件数据收集器,属于Elastic Stack(ELK Stack)中…

浏览器提示不安全

当我们使用浏览器访问一个网站时,如果该网站使用的是HTTPS连接,那么浏览器会对其进行安全性的检查。其中一项重要的检查就是确认该网站是否拥有有效的SSL证书。然而,有时我们会在浏览器中看到“不安全”的警告,这通常是由于SSL证书…

Python网络爬虫的基础理解-对应的自我理解误区

##通过一个中国大学大学排名爬虫的示例进行基础性理解 以软科中国最好大学排名为分析对象,基于requests库和bs4库编写爬虫程序,对2015年至2019年间的中国大学排名数据进行爬取:(1)按照排名先后顺序输出不同年份的前10…

IntelliJ IDEA创建一个spark的项目

在开始之前,需要说明的是 要跑通基本的wordcount程序,是不需要在windows上安装 hadoop 和spark的,因为idea在跑程序的时候,会按照 pom.xml配置文件,从指定的 repository源,按照properties指定的版本&#x…

高性能和多级高可用,云原生数据库 GaiaDB 架构设计解析

1 云原生数据库和 GaiaDB 目前,云原生数据库已经被各行各业大规模投入到实际生产中,最终的目标都是「单机 分布式一体化」。但在演进路线上,当前主要有两个略有不同的路径。 一种是各大公有云厂商选择的优先保证上云兼容性的路线。它基于存…

二叉树的非递归遍历(详解)

二叉树非递归遍历原理 使用先序遍历的方式完成该二叉树的非递归遍历 通过添加现有项目的方式将原来编写好的栈文件导入项目中 目前项目存在三个文件一个头文件,两个cpp文件: 项目头文件的代码截图:QueueStorage.h 项目头文件的代码&#xff…

鸿蒙原生应用开发【分布式数据对象】

01、什么是分布式数据对象 在可信组网环境下,多个相互组网认证的设备将各自创建的对象加入同一个 sessionId,使得加入的多个数据对象之间可以同步数据,也就是说,当某一数据对象属性发生变更时,其他数据对象会检测到这…

Redis 命令全解析之 Hash类型

文章目录 ⛄介绍⛄命令⛄RedisTemplate API⛄应用场景 ⛄介绍 Hash类型,也叫散列,其value是一个无序字典,类似于Java中的 HashMap 结构。 String结构是将对象序列化为JSON字符串后存储,当需要修改对象某个字段时很不方便&#xf…

Navicat 技术指引 | 适用于 GaussDB 分布式的自动运行功能

Navicat Premium(16.3.3 Windows 版或以上)正式支持 GaussDB 分布式数据库。GaussDB 分布式模式更适合对系统可用性和数据处理能力要求较高的场景。Navicat 工具不仅提供可视化数据查看和编辑功能,还提供强大的高阶功能(如模型、结…

Nginx按指定格式记录访问日志

今天突然想起来一个日志的一个东西,因为拉项目无意中看到了日志文件的一些东西,现在不经常做后端了,加上其他的一些原因吧.有时候有些问题也没想太多,马马虎虎就过了,后来想想还是要记录一下这方面的处理过程吧: 一般我们作为开发人员关注的日志只是在应用程序层面的,我们称它…

51 单片机定时器

51 单片机定时器 目录 51 单片机定时器定时器作用定时器的工作模式模式1(常用)定时器时钟源中断系统定时器寄存器 补充实际使用 声明:本文以 STC89C52 单片机为例 定时器作用 主要有三个作用 1、用于计时系统,可实现软件计时,使程序每隔一段…

java:slf4j、log4j、log4j2、logback日志框架的区别与示例

文章目录 背景SLF4J - 简单日志门面:Log4j - 强大而古老的日志框架:Log4j2 - Log4j的升级版:Logback - Log4j的继任者:比较Springboot集成slf4j、log4j2参考 背景 在Java开发中,日志记录是一个不可或缺的组成部分。为了满足不同的需求,Java社区涌现出多…