常見正則表達式整理與Java使用正則表達式的例子

一、常見正則表達式整理

1. 基礎驗證類

  • 郵箱地址
    ^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$
    (匹配如 user@example.com
  • 手機號
    ^1[3-9]\\\\d{9}$
    (匹配國內11位手機號,如 13812345678
  • 中文字符
    ^[\u4e00-\u9fa5]+$
    (匹配純中文字符串,如 你好
  • 密碼強度
    ^(?=.*[a-zA-Z])(?=.*\\d).{8,20}$
    (至少含字母和數字,長度8-20位)

2. 數據格式類

  • 日期(YYYY-MM-DD)
    ^\\d{4}-\\d{2}-\\d{2}$
  • 浮點數
    ^-?\\d+(\\.\\d+)?$
    (支持正負數及可選小數部分)
  • URL
    ^(https?:冒險一下)://(?:www\\.)?[-a-zA-Z0-9@:%._\\+~#?&//=]{2,256}\\. [a-z]{2,6}\\b(?:[-a-zA-Z0-9@:%._\\+~#?&//=]*)$
    (匹配帶協議的完整URL)

3. 文件與路徑類

  • 文件擴展名(如.jpg)
    \\\\.(jpg|png|gif)$
    (匹配以特定擴展名結尾的文件)

二、Java正則表達式使用示例

1. 郵箱匹配

import java.util.regex.*;
public class EmailExample {public static void main(String[] args) {String regex = "^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\. [a-zA-Z]{2,}$";String input = "user.name+test@example.co.uk";Pattern pattern = Pattern.compile(regex);Matcher matcher = pattern.matcher(input);if (matcher.matches()) {System.out.println("郵箱有效");} else {System.out.println("郵箱無效");}}
}
  • 解釋:^$ 確保全字符串匹配,\\. 轉義點號,{2,} 匹配頂級域名長度。

2. 提取中文字符

public class ChineseExtract {public static void main(String[] args) {String input = "Hello 你好!歡迎使用正則表達式。";String regex = "[\\u4e00-\\u9fa5]+";Pattern pattern = Pattern.compile(regex);Matcher matcher = pattern.matcher(input);while (matcher.find()) {System.out.println("提取到中文:" + matcher.group());  // 輸出 "你好" 和 "歡迎使用正則表達式"}}
}
  • 解釋:\\u4e00-\\u9fa5 匹配Unicode范圍內的中文字符。

3. 替換字符串中的空格

public class SpaceReplace {public static void main(String[] args) {String input = "   Java   正則表達式   示例   ";String regex = "\\s+";  // 匹配一個或多個空格String result = input.replaceAll(regex, " ").trim();System.out.println(result);  // 輸出 "Java 正則表達式 示例"}
}
  • 解釋:\\s+ 匹配連續空白字符,replaceAll 替換為單個空格。

4. 驗證手機號

public class PhoneValidation {public static void main(String[] args) {String regex = "^1[3-9]\\\\d{9}$";String phone = "13812345678";boolean isValid = phone.matches(regex);System.out.println("手機號是否有效:" + isValid);  // 輸出 true}
}
  • 解釋:1 開頭,第二位3-9,后接9位數字。

三、注意事項與優化建議

  1. 轉義字符:Java中需雙反斜杠(如 \\d 表示數字)。
  2. 預編譯:高頻使用的正則表達式應預編譯為 Pattern 對象(如 Pattern.compile(regex))。
  3. 避免回溯:減少 .* 等貪婪匹配,優先用精確范圍(如 \\d{4} 代替 .*)。
  4. 性能敏感場景:使用 Matcher.find() 代替 String.matches() 提升效率。

四、總結

Java正則表達式通過 java.util.regex 包實現,涵蓋匹配、替換、驗證等操作。合理使用分組、量詞和邊界符可增強表達式靈活性。實際開發中需結合具體需求選擇模式,并注意性能優化。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/78506.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/78506.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/78506.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

vue2 項目的 vscode 插件整理

Folder Selector 當項目文件很多時,查找一個文件,可能需要在資源管理器中不斷的滾動再打開文件夾查找文件,很麻煩,這個可以增加一個面板通過右鍵文件夾選擇 然后在面板中查看文件 Reveal Button 文件中跳轉到另一個文件時&#…

使用 Node、Express 和 MongoDB 構建一個項目工程

本文將詳細介紹如何使用 Node.js Express MongoDB 構建一個完整的 RESTful API 后端項目,涵蓋: 項目初始化 Express 服務器搭建 MongoDB 數據庫連接 REST API 設計(CRUD 操作) 錯誤處理與中間件 源碼結構與完整代碼 部署建…

如何實現Spring Boot應用程序的安全性:全面指南

在現代 Web 開發中,安全性是 Spring Boot 應用程序的核心需求,尤其是在微服務、云原生和公開 API 場景中。Spring Boot 結合 Spring Security 提供了一套強大的工具,用于保護應用程序免受常見威脅,如未經授權的訪問、數據泄露、跨…

無人機避障——Mid360+Fast-lio感知建圖+Ego-planner運動規劃(胎教級教程)

電腦配置:Xavier-nx、ubuntu 18.04、ros melodic 激光雷達:Livox_Mid-360 結果展示:左邊Mid360+Fast-lio感知建圖,右邊Ego-planner運動規劃 1、讀取雷達數據并顯示 無人機避障——感知篇(采用Livox-Mid360激光雷達獲取點云數據顯示)-CSDN博客 看看雷達數據話題imu以及…

數據庫證書可以選OCP認證嗎?

直接回答:國內OCP認證持有者的年薪普遍在15萬到40萬元之間,具體收入與經驗、地區和行業強相關。OCP認證能大幅提升求職競爭力,但薪資天花板仍由個人能力決定。 一、薪資范圍和核心影響因素 OCP認證是Oracle數據庫領域的中高級“技術通行證”…

MySQL 從入門到精通:第二篇 - 數據類型、約束與索引

1. MySQL數據類型詳解 數值類型 整數類型 -- 常用整數類型及范圍 CREATE TABLE integer_types (tiny_col TINYINT, -- 1字節,有符號(-128~127),無符號(0~255)small_col SMALLINT, -- 2字節,有符號(-32768~32767),無符號(0~65535)medium_col MEDIUMINT,

Arduino 入門學習筆記(二):開發環境搭建

Arduino 入門學習筆記(二):開發環境搭建 B站學習鏈接:link 1. Arduino IDE2軟件介紹 Arduino IDE,Arduino Integrated Development Environment,即Arduino集成開發環境。 Arduino IDE具有程序編輯、調試…

ChatGPT、deepseek、豆包、Kimi、通義千問、騰訊元寶、文心一言、智譜清言代碼能力對比

均使用測試時的最強模型 均是一次對話,對話內容一樣 均開啟深度思考 能聯網的都聯網了,但是作用不大,因為藍橋杯剛考完,洛谷題目剛上傳沒多久 問題一測試了兩遍 從問題三開始不再測試智譜清言(它思考時間太長了,前兩個…

OCR之身份證識別

前言 OCR身份證識別是光學字符識別技術在身份證領域的應用。通過掃描或拍照獲取身份證圖像,利用圖像處理、深度學習等技術,自動提取姓名、性別、民族、出生日期、地址、身份證號等信息,可大幅提升信息錄入效率,廣泛應用于政務、金…

線性代數—向量與矩陣的范數(Norm)

參考鏈接: 范數(Norm)——定義、原理、分類、作用與應用 - 知乎 帶你秒懂向量與矩陣的范數(Norm)_矩陣norm-CSDN博客 什么是范數(norm)?以及L1,L2范數的簡單介紹_l1 norm-CSDN博客 范數(Norm…

Java高頻面試之并發編程-08

hello啊,各位觀眾姥爺們!!!本baby今天來報道了!哈哈哈哈哈嗝🐶 面試官:說說sleep和wait的區別? 1. 核心區別總結 特性sleep()wait()所屬類Thread 類的靜態方法Object 類的實例方法…

Spring-Ai-McpSever從外到內

MCP是什么 Model Context Protocol (MCP) 是一個開放協議,它使 LLM 應用與外部數據源和工具之間的無縫集成成為可能。無論你是構建 AI 驅動的 IDE、改善 chat 交互,還是構建自定義的 AI 工作流,MCP 提供了一種標準化的方式,將 LL…

ubuntu22.04 命令行修改靜態ip

傳統interfaces文件配置(適用于舊版)即便我們已經在桌面上配置了固定ip 這里也可以修改 ?編輯配置文件? 修改/etc/network/interfaces(需安裝net-tools): # interfaces(5) file used by ifup(8) and ifdown(8) # In…

計算機網絡學習筆記 4-6章

第 4 章 網絡層 【考綱內容】 (一)網絡層的功能 異構網絡互連;路由與轉發;SDN 基本概念;擁塞控制 (二)路由算法 靜態路由與動態路由;距離 - 向量路由算法&#xff1…

力扣hot100_子串_python版本

一、560. 和為 K 的子數組 思路:這就是一道典型的前綴和的題代碼: class Solution:def subarraySum(self, nums: List[int], k: int) -> int:presum [0] * (len(nums) 1)for i, x in enumerate(nums):presum[i 1] presum[i] x # 前綴和序列需要n1個ans 0…

猿人學web端爬蟲攻防大賽賽題第15題——備周則意怠-常見則不疑

解題步驟 1、觀察抓的包 2、有個m參數,一看就是經過處理的,我們得知道m是如何組成的。看Initiator模塊。 3、還是看request函數,往上一看就看到了m的賦值操作。 打斷點,觸發。 4、看下window.m()的定義 5、比較好理解的&#x…

rag增強檢索-基于關鍵詞檢索的混合檢索模式

1. 為什么在 RAG 里要用關鍵詞檢索? 向量檢索(embedding-based retrieval)是找語義相近的內容,但有時候不夠準確。比如用戶問了具體人名、產品型號、年份,這類關鍵詞強指向性的信息,用向量檢索可能匹配不到最相關內容。**關鍵詞檢索(keyword-based retrieval)**可以直接…

純真社區IP庫離線版發布更新

純真社區IP庫離線版發布更新 發布者:技術分享 2005年,隨著中國互聯網的蓬勃發展,純真IP庫誕生了。作為全球網絡空間地理測繪技術的領先者,純真開源項目為中國互聯網行業提供了高質量的網絡空間IP庫數據。純真IP庫目前已經覆蓋超…

GitOps進化:深入探討 Argo CD 及其對持續部署的影響

什么是 GitOps? 雖然軟件開發生命周期的大部分已經實現自動化,但基礎設施仍然在很大程度上依賴于人工,需要專業團隊的參與。隨著當今基礎設施需求的不斷增長,實施基礎設施自動化變得越來越重要。現代基礎設施需要具備彈性&#x…

通過示例學習:連續 XOR

通過示例學習:連續 XOR 如果我們想在 PyTorch 中構建神經網絡,可以使用 (with) 指定所有參數(權重矩陣、偏差向量),讓 PyTorch 計算梯度,然后調整參數。但是,如果我們有很…