java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > Java前后端正则表达式

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

作者:流星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

常用修饰符

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前后端正则表达式内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文