正則表達式詳細講解

目錄

一、正則表達式概念

二、八元素

1、普通字符:

2、元字符:

3、通配符 .:

4、字符類 []:

5、量詞:

6、錨點 ^ 和 $:

7、捕獲組 ():

8、轉義字符 \:

三、日常使用的正則表達式

1、郵箱

2、電話(美國)

3、URL

4、日期(YYYY-MM-DD)

5、IP地址

6、用戶名(僅包含字母和數字,且長度為6-12字符)

7、密碼(包含大小寫字母、數字、特殊字符,且長度為8-16個字符)

總結

我的其他博客


一、正則表達式概念

正則表達式(Regular Expression,簡稱Regex或RegExp)是一種用于描述字符串模式的表達式。它提供了一種靈活的方式來進行字符串的匹配、搜索、替換和提取操作。正則表達式是由普通字符和元字符(metacharacters)組成的字符串,這些元字符具有特殊的意義,用于定義匹配規則。

以下是正則表達式的一些基本概念和元素:

  1. 普通字符: 表達式中的普通字符(例如字母、數字、符號)表示它們自身,只有它們自身與輸入字符串中的字符匹配。

  2. 元字符: 元字符是具有特殊含義的字符,它們用于構建匹配模式。例如,*+.^$ 等都是元字符。

  3. 通配符: .(點)是一個通配符,匹配任意單個字符,除了換行符。

  4. 字符類: 方括號 [] 用于定義一個字符類,匹配其中任意一個字符。例如,[aeiou] 可以匹配任何一個元音字母。

  5. 量詞: 量詞用于指定匹配模式中字符的數量。例如,* 表示零個或多個,+ 表示一個或多個,? 表示零個或一個。

  6. 錨點: ^(脫字符)用于匹配字符串的開頭,$ 用于匹配字符串的結尾。

  7. 捕獲組: 使用圓括號 () 可以創建捕獲組,用于分組并記住匹配的子表達式。捕獲組允許你提取匹配的部分。

  8. 轉義字符: 反斜杠 \ 用于轉義元字符,使其失去特殊含義,匹配字符本身。例如,\. 匹配實際的點字符。

正則表達式的語法因編程語言而異,但基本的概念和元素在大多數語言中是相似的。許多編程語言(如Python、JavaScript、Java)都提供了內置的正則表達式支持。正則表達式是一個強大而靈活的工具,但有時也可能變得復雜,特別是對于復雜的匹配模式。

二、八元素

1、普通字符:

普通字符是正則表達式中的字母、數字、符號等,它們表示它們自身。例如,正則表達式中的 a 將精確匹配字符串中的字母 "a"。

2、元字符:

元字符是具有特殊含義的字符,用于構建匹配模式。一些常見的元字符包括:

  • .:匹配任意單個字符(除了換行符)。
  • *:匹配前一個字符的零個或多個實例。
  • +:匹配前一個字符的一個或多個實例。
  • ?:匹配前一個字符的零個或一個實例。
  • ^:匹配字符串的開始。
  • $:匹配字符串的結束。
  • []:定義字符類,匹配其中任意一個字符。
  • ():創建捕獲組。

3、通配符 .

點號 . 是一個通配符,用于匹配任意單個字符,除了換行符。例如,正則表達式 a.c 可以匹配 "abc"、"adc"、"a1c" 等。

4、字符類 []

字符類用于定義一個字符集合,匹配其中的任意一個字符。例如,正則表達式 [aeiou] 匹配任何一個元音字母。

5、量詞:

  • 量詞用于指定字符或字符類的重復次數。
    • *:匹配前一個字符的零個或多個實例。
    • +:匹配前一個字符的一個或多個實例。
    • ?:匹配前一個字符的零個或一個實例。
  • 例如,正則表達式 \d+ 可以匹配一個或多個數字。

6、錨點 ^$

^ 用于匹配字符串的開始,$ 用于匹配字符串的結束。例如,正則表達式 ^start 可以匹配以 "start" 開始的字符串。

7、捕獲組 ()

捕獲組用于創建子表達式,可以對其進行分組,以便后續引用或提取。例如,正則表達式 (\d+)-(\w+) 可以匹配像 "123-abc" 這樣的字符串,并將數字和字母分別放入兩個捕獲組中。

8、轉義字符 \

反斜杠 \ 用于轉義元字符,使其失去特殊含義,匹配字符本身。例如,\. 可以匹配實際的點字符。

三、日常使用的正則表達式

1、郵箱

  • 正則表達式:^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$
  • 用途:用于驗證電子郵件地址的格式。

2、電話(美國)

  • 正則表達式:^\(?\d{3}\)?[-.\s]?\d{3}[-.\s]?\d{4}$
  • 用途:用于驗證美國的電話號碼格式,包括可選的括號、分隔符。

3、URL

  • 正則表達式:^(https?|ftp):\/\/[^\s/$.?#].[^\s]*$
  • 用途:用于驗證URL的格式。

4、日期(YYYY-MM-DD)

  • 正則表達式:^\d{4}-\d{2}-\d{2}$
  • 用途:用于驗證日期的格式,例如:2023-12-07。

5、IP地址

  • 正則表達式:^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$
  • 用途:用于驗證IPv4地址的格式。

6、用戶名(僅包含字母和數字,且長度為6-12字符)

  • 正則表達式:^[a-zA-Z0-9]{6,12}$
  • 用途:用于驗證用戶名的格式,只包含字母和數字,長度為6到12個字符。

7、密碼(包含大小寫字母、數字、特殊字符,且長度為8-16個字符)

  • 正則表達式:^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,16}$
  • 用途:用于驗證密碼的格式,包含大小寫字母、數字和特殊字符,長度為8到16個字符。

總結

正則表達式是一項強大而靈活的技能,它在許多編程語言和文本編輯器中都有廣泛的應用。熟練地使用正則表達式可以大大提高文本處理和字符串操作的效率

我的其他博客

HTTP與HTTTPS的區別-CSDN博客

?

什么情況下會產生StackOverflowError(棧溢出)和OutOfMemoryError(堆溢出)怎么排查-CSDN博客

談談我對HashMap擴容機制的理解及底層實現-CSDN博客?

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

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

相關文章

markdown記錄

文章目錄 基礎操作使用一級列表、二級列表 博文鏈接 基礎操作 使用一級列表、二級列表 博文鏈接 CSDN-Markdown語法集錦 CSDN-markdown語法之如何使用LaTeX語法編寫數學公式 CSDN Markdown簡明教程1-關于Markdown CSDN Markdown簡明教程2-基本使用 CSDN Markdown簡明教程3-表…

Bash腳本調用百度翻譯API進行中文到英文的翻譯

寫一個bash腳本調用百度翻譯API進行中文到英文的翻譯,首先需要進行相關的申請。看百度給出的文檔鏈接: 百度翻譯API文檔 需要先注冊一個百度賬號,然后申請APPID。腳本中會用到appid和key這兩個值。按照文檔給出的提示可以獲得。如下是腳本: #…

使用VBA創建Excel條件格式

實例需求:數據總行數不確定,現需要將Category區域(即C列到J列)中第3行開始的區域設置條件格式,規則如下: 只對部分指定單元格應用色階條件格式(3色)指定單元格應滿足條件&#xff1…

移動距離

//偶數行需要反轉,判斷行數時,最后一個需要特判,可以用向上取整 //也可以把傳入的值減一,下標從0開始 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader;public class Main{static int w,m,n;static BufferedReader i…

大數據技術1:大數據發展簡史

前言:學習大數據技術,知道會用已經夠了,但是要想走得更遠,應該了解它發展的來龍去脈,為何會有新的技術/工具的出現,相比老的技術有什么樣的進步。 1、傳統數據處理系統存在的問題 隨著信息時代互聯網技術爆…

JDBC簡介及快速入門-黑馬(P1)

黑馬視頻b站鏈接: 01-JDBC簡介&快速入門_嗶哩嗶哩_bilibili 🐶一、JDBC 簡介 JDBC 概念: JDBC 就是使用 Java 語言操作關系型數據庫的一套 API。 全稱(Java DataBase Connectivity) Java 數據庫連接 JDBC 本質…

React 筆記 jsx

嚴格約定:React 組件必須以大寫字母開頭,而 HTML 標簽則必須是小寫字母。 React JSX JSX 是由 React 推廣的 JavaScript 語法擴展。 用于表達組件的 特殊語法的 js 函數 要求標簽必須閉合;返回的組件必須包裹在一個父標簽內; …

鴻蒙4.0開發筆記之ArkTS語法基礎之數據傳遞與共享詳細講解(十八)

文章目錄 一、路由數據傳遞(router)1、路由數據傳遞定義2、路由數據傳遞使用方法3、數據傳遞兩個頁面的效果 二、頁面間數據共享(EntryAbility)1、定義2、實現案例3、避坑點 三、數據傳遞練習 一、路由數據傳遞(router…

PaaS(平臺即服務)——云計算服務模型(特點,應用場景,優點和缺點,示例)

PaaS(平臺即服務)是云計算的一種服務模型,它提供了一個平臺,允許客戶開發、運行和管理應用程序,而無需建立和維護通常與這些過程相關的復雜基礎設施。PaaS 是作為服務交付的一種方式,它提供了一套工具和服務…

網卡學習資料整理

GMAC網卡相關介紹與分析 https://www.cnblogs.com/forwards/p/17101438.html https://www.eefocus.com/article/1635234.html Linux Phy 驅動解析_linux phy驅動-CSDN博客 GMAC接口五篇 https://blog.csdn.net/dkmknjk/category_11837422.html 以太網掃盲(一&am…

麒麟V10服務器安裝Apache+PHP

安裝PHP yum install php yum install php-curl php-gd php-json php-mbstring php-exif php-mysqlnd php-pgsql php-pdo php-xml 配置文件 /etc/php.ini 修改參數 date.timezone Asia/Shanghai max_execution_time 60 memory_limit 1280M post_max_size 200M file_upload…

分布式和微服務區別

1.分布式 微服務和分布式的區別 1.將一個大的系統劃分為多個業務模塊,業務模塊分別部署到不同的機器上,各個業務模塊之間通過接口進行數據交互。區別分布式的方式是根據不同機器不同業務。 2.分布式是否屬于微服務? 答案是肯定的。微服務的意…

動手制作個人電腦對話機器人transformers+DialoGPT

簡介:DialoGPT是一個對話模型,由微軟基于GPT-2訓練。由于DialoGPT在對話數據上進行了預訓練,所以它比原始的GPT-2更擅長生成類似對話的文本。DialoGPT的主要目標是生成自然且連貫的對話,而不是在所有情況下都提供事實上的正確答案…

基于Spring、SpringMVC、MyBatis開發的游樂場管理系統

文章目錄 項目介紹主要功能截圖:部分代碼展示設計總結項目獲取方式?? 作者主頁:超級無敵暴龍戰士塔塔開 ?? 簡介:Java領域優質創作者??、 簡歷模板、學習資料、面試題庫【關注我,都給你】 ??文末獲取源碼聯系?? 項目介紹 基于Spring、SpringMVC、MyBatis開發的游…

ca單點登錄

最近搞得單點登錄碰到了很多問題,具體的問題有如下幾個: ①如何獲取usbkey的值 ②要實現的單點登錄的方案 ③如何獲取多個key的值,并進行選擇登錄 ④ie跳谷歌訪問業務界面 注:最后將實現代碼附上,希望對大家有所幫助 1…

Numpy數組的運算(第7講)

Numpy數組的運算(第7講) ??????? ??博主 侯小啾 感謝您的支持與信賴。?? ????????????????????????????????????????????????????????????????????????????????????????…

進制 + 原碼,反碼,補碼

進制轉換 整數部分 小數部分 原碼 反碼 補碼 原碼轉補碼: 左邊和右邊第一個1不變,中間取反。-0 除外。 計算機系統中數值一律用補碼來存儲的原因 其他 術語 進制表 進制數的表示 詳細教程可轉 愛編程的大丙

數學建模-數據新動能驅動中國經濟增長的統計研究-基于數字產業化和產業數字化的經濟貢獻測度

數據新動能驅動中國經濟增長的統計研究-基于數字產業化和產業數字化的經濟貢獻測度 整體求解過程概述(摘要) 伴隨著數據要素化進程的不斷加深,對于數據如何作用于經濟發展,數據與其他要素結合產生的動能應該如何測度的研究愈發重要。本文將數據新動能分…

sql 條件統計,count+if+sum

1,前提 看同事寫的sql語句時,覺得他寫的這個countsumif的sql還挺新鮮, 學習記錄下,感覺這個挺適合用來對歷史數據做條件統計 2,count使用結果 select count(0);//1select count(1);//1select count(null);//0select…

機器人剛性碰撞任務的阻抗控制性能

問題描述 對于機器人剛性碰撞任務,阻抗控制可以有效地提高機器人的適應性和穩定性。 在剛性碰撞任務中,機器人在接觸外部物體時需要快速適應并調整自身的運動軌跡和速度,以實現精確的操控和穩定的交互。阻抗控制可以通過調整機器人的阻抗參…