Java前后端正则表达式相关内容(附完整示例)

 更新时间:2025年11月12日 11:09:08   作者:流星521122  
正则表达式用于描述一组字符的共有特性,以便于我们对字符集做搜索、替换、编辑等操作,这篇文章主要介绍了Java前后端正则表达式的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下

摘要:

正则表达式是字符串处理的重要工具,Java和JavaScript中都支持正则表达式操作。本文介绍了正则表达式的基本语法,包括字符匹配、数量词、边界匹配和分组等核心概念。Java后端通过Pattern和Matcher类实现字符串匹配、查找和替换,JavaScript前端则通过test()、match()和replace()等方法实现类似功能。文中提供了验证邮箱、提取数字和替换字符串等常见场景的代码示例,帮助开发者快速掌握正则表达式在前后端开发中的应用。

一、正则表达式基础概念

1.1 定义

  • 用于描述字符串模式的工具,通过特定语法规则定义待匹配字符串的特征,可实现字符串匹配、查找、替换等操作

1.2 语法基础

(1)字符匹配

类型语法说明示例
普通字符常规字符代表自身abc 匹配 “abc”
特殊字符.匹配除换行符 \n 外的任意单个字符a.c 匹配 “abc”、“a1c”
[]字符类,匹配括号内任意一个字符,支持范围(a-z/0-9[abc] 匹配 “a”/“b”/“c”
[^]否定字符类,匹配不在括号内的任意字符[^abc] 匹配非 a/b/c

(2)数量词

语法说明示例
*匹配前面字符零次或多次a* 匹配 “”、“a”、“aa”
+匹配前面字符一次或多次a+ 匹配 “a”、“aa”
?匹配前面字符零次或一次a? 匹配 “”、“a”
{n}匹配前面字符恰好 n 次a{3} 匹配 “aaa”
{n,}匹配前面字符至少 n 次a{3,} 匹配 “aaa”、“aaaa”
{n,m}匹配前面字符至少 n 次、最多 m 次a{3,5} 匹配 “aaa”-“aaaaa”

(3)边界匹配

语法说明示例
^匹配字符串开头^abc 匹配 “abc123”
$匹配字符串结尾abc$ 匹配 “123abc”
\b匹配单词边界\bcat\b 匹配独立 “cat”

(4)分组与引用

语法说明示例
()分组,将括号内内容作为整体(ab)+ 匹配 “ab”、“abab”
\n引用第 n 个分组匹配的内容(ab)\1 匹配 “abab”

二、Java后端正则表达式应用

2.1 核心类(java.util.regex包)

类名作用核心方法
Pattern表示编译后的正则表达式Pattern.compile(String regex)
Matcher对输入字符串执行匹配操作matches()find()group()replaceAll()

2.2 核心场景示例

(1)字符串匹配(验证邮箱)

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

public class EmailValidator {
    public static void main(String[] args) {
        String email = "example@email.com";
        // 邮箱正则:用户名@域名.后缀(后缀至少2个字母)
        String regex = "^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$";
        
        Pattern pattern = Pattern.compile(regex);
        Matcher matcher = pattern.matcher(email);
        
        System.out.println(email + (matcher.matches() ? " 有效" : " 无效"));
    }
}

(2)字符串查找(提取所有数字)

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

public class NumberFinder {
    public static void main(String[] args) {
        String input = "abc123def456ghi789";
        String regex = "\\d+"; // 匹配1个及以上数字
        
        Pattern pattern = Pattern.compile(regex);
        Matcher matcher = pattern.matcher(input);
        
        while (matcher.find()) { // 循环查找所有匹配项
            System.out.println("找到数字: " + matcher.group());
        }
    }
}

(3)字符串替换(数字替换为 #)

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

public class NumberReplacer {
    public static void main(String[] args) {
        String input = "abc123def456ghi789";
        String regex = "\\d+";
        String replacement = "#";
        
        Pattern pattern = Pattern.compile(regex);
        Matcher matcher = pattern.matcher(input);
        
        String result = matcher.replaceAll(replacement); // 替换所有匹配项
        System.out.println("替换后: " + result);
    }
}

三、Java前端(JavaScript)正则表达式应用

3.1 正则创建方式

方式语法示例说明
字面量var regex = /pattern/modifiers;简洁,常用;modifiers 为修饰符
构造函数var regex = new RegExp("pattern", "modifiers");支持动态拼接pattern

常用修饰符

  • i:忽略大小写
  • g:全局匹配(不终止于第一个匹配项)
  • m:多行匹配

3.2 核心场景示例

(1)字符串匹配(验证邮箱)

function validateEmail(email) {
    // 与Java邮箱正则语法一致(无需额外转义)
    const regex = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;
    return regex.test(email); // test() 返回布尔值
}

console.log(validateEmail("example@email.com") ? "有效" : "无效");

(2)字符串查找(提取所有数字)

const input = "abc123def456ghi789";
const regex = /\d+/g; // g修饰符:全局匹配

const matches = input.match(regex); // match() 返回匹配数组
console.log("找到数字: " + (matches ? matches.join(", ") : "无"));

(3)字符串替换(数字替换为 #)

const input = "abc123def456ghi789";
const regex = /\d+/g;
const replacement = "#";

const result = input.replace(regex, replacement); // replace() 直接替换
console.log("替换后: " + result);

四、常用正则表达式汇总

4.1 数字相关

用途正则表达式匹配示例
整数(正负/零)^-?\d+$123、-456、0
正整数^[1-9]\d*$1、123
负整数^-[1-9]\d*$-1、-123
浮点数(正负/零)^-?\d+(\.\d+)?$1.23、-4.56、0.0
正浮点数^[1-9]\d*(\.\d+)?|0\.\d*[1-9]\d*$1.23、0.123

4.2 字符相关

用途正则表达式匹配示例
汉字^[\u4e00-\u9fa5]+$你好、中国
大写英文字母^[A-Z]+$ABC
小写英文字母^[a-z]+$abc
字母+数字^[A-Za-z0-9]+$Ab123
字母+数字+下划线^\w+$Ab123_

4.3 实用场景

用途正则表达式匹配示例
邮箱地址^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$example@email.com
中国手机号^1[3-9]\d{9}$13800138000
18位身份证(简配)^\d{17}[\dXx]$11010519491231002X
URL(简配)^https?://[^\s/$.?#].[^\s]*$https://www.example.com

总结 

到此这篇关于Java前后端正则表达式相关内容的文章就介绍到这了,更多相关Java前后端正则表达式内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 全面理解Java类和对象

    全面理解Java类和对象

    下面小编就为大家带来一篇全面理解Java类和对象。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-06-06
  • 关于@Transactional事务表被锁的问题及解决

    关于@Transactional事务表被锁的问题及解决

    这篇文章主要介绍了关于@Transactional事务表被锁的问题及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-01-01
  • springBoot整合rabbitmq测试常用模型小结

    springBoot整合rabbitmq测试常用模型小结

    这篇文章主要介绍了springBoot整合rabbitmq并测试五种常用模型,本文主要针对前五种常用模型,在spirngboot框架的基础上整合rabbitmq并进行测试使用,需要的朋友可以参考下
    2022-01-01
  • java实现简单租车系统

    java实现简单租车系统

    这篇文章主要为大家详细介绍了java实现简单租车系统,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-01-01
  • SpringBoot框架如何管理Xml和CSV

    SpringBoot框架如何管理Xml和CSV

    XML是可扩展标记语言,是一种用于标记电子文件使其具有结构性的标记语言。CSV是一种通用的、相对简单的文件格式,通常被用在大数据领域,进行大规模的数据搬运操作,本文将介绍SpringBoot框架如何管理Xml和CSV
    2021-06-06
  • java8列表中通过stream流根据对象属性去重的三种方式

    java8列表中通过stream流根据对象属性去重的三种方式

    这篇文章主要介绍了java8列表中通过stream流根据对象属性去重的三种方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-08-08
  • 从零开始学springboot整合feign跨服务调用的方法

    从零开始学springboot整合feign跨服务调用的方法

    这篇文章主要介绍了从零开始学springboot整合feign跨服务调用的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-03-03
  • SpringBoot工程打包与运行的实现详解

    SpringBoot工程打包与运行的实现详解

    本文主要介绍了SpringBoot工程的打包与运行的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-07-07
  • JavaWeb实现Session跨页面传递数据

    JavaWeb实现Session跨页面传递数据

    本文主要介绍了 JavaWeb实现Session跨页面传递数据,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-07-07
  • 详解Spring事务回滚和事务提交

    详解Spring事务回滚和事务提交

    这篇文章主要介绍了详解Spring事务回滚和事务提交的相关资料,帮助大家更好的理解和学习使用spring框架,感兴趣的朋友可以了解下
    2021-03-03

最新评论