正則表達式語法+常用正則表達式

1. 簡介


1> 正則表達式(Regular Expression)是一種文本模式,包括普通字符(例如,a 到 z 之間的字母)和特殊字符(稱為"元字符"),可以用來描述和匹配字符串的特定模式
2> 正則表達式是一種用于模式匹配和搜索文本的工具
3> 正則表達式提供了一種靈活且強大的方式來查找、替換、驗證和提取文本數據
4> 正則表達式可以應用于各種編程語言和文本處理工具中,如 JavaScript、Python、Java、Perl等

2. 簡單示例


^[0-9]+abc$
1> ^ 為匹配輸入字符串的開始位置
2> [0-9]+匹配多個數字, [0-9] 匹配單個數字,+ 匹配一個或者多個
3> abc 匹配字母 a b c 并以 a b c 結尾, 匹配字母 abc 并以 abc 結尾, 匹配字母abc并以abc結尾, 為匹配輸入字符串的結束位置

3. 元字符


3.1 字符匹配

普通字符:普通字符按照字面意義進行匹配,例如匹配字母 “a” 將匹配到文本中的 “a” 字符
元字符:元字符具有特殊的含義,例如 \d 匹配任意數字字符,\w 匹配任意字母數字字符,. 匹配任意字符(除了換行符)等

3.2 量詞

*:匹配前面的模式零次或多次
+:匹配前面的模式一次或多次
?:匹配前面的模式零次或一次
{n}:匹配前面的模式恰好 n 次
{n,}:匹配前面的模式至少 n 次
{n,m}:匹配前面的模式至少 n 次且不超過 m 次

3.3 字符類

[ ]:匹配括號內的任意一個字符。例如,[abc] 匹配字符 “a”、“b” 或 “c”
[^ ]:匹配除了括號內的字符以外的任意一個字符。例如,[^abc] 匹配除了字符 “a”、“b” 或 “c” 以外的任意字符

3.4 邊界匹配

^:匹配字符串的開頭
$:匹配字符串的結尾
\b:匹配單詞邊界
\B:匹配非單詞邊界

3.5 分組和捕獲

( ):用于分組和捕獲子表達式
(?: ):用于分組但不捕獲子表達式

3.6 特殊字符

\:轉義字符,用于匹配特殊字符本身
.:匹配任意字符(除了換行符)
|:用于指定多個模式的選擇

4. 語法


在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

5. 常用正則表達式


5.1 數字
  • 數字:^[0-9]*$
  • n位的數字:^\d{n}$
  • 至少n位的數字:^\d{n,}$
  • m-n位的數字:^\d{m,n}$
  • 零和非零開頭的數字:^(0|[1-9][0-9]*)$
  • 非零開頭的最多帶兩位小數的數字:^([1-9][0-9]*)+(.[0-9]{1,2})?$
  • 帶1-2位小數的正數或負數:^(-)?\d+(.\d{1,2})?$
  • 正數、負數、和小數:^(-|+)?\d+(.\d+)?$
  • 有兩位小數的正實數:^[0-9]+(.[0-9]{2})?$
  • 有1~3位小數的正實數:^[0-9]+(.[0-9]{1,3})?$
  • 非零的正整數:^[1-9]\d*$ 或 ^([1-9][0-9]){1,3}$ 或 ^+?[1-9][0-9]$
  • 非零的負整數:^-[1-9][]0-9"$ 或 ^-[1-9]\d$
  • 非負整數:^\d+$ 或 ^[1-9]\d*|0$
  • 非正整數:^-[1-9]\d*|0$ 或 ^((-\d+)|(0+))$
  • 非負浮點數:^\d+(.\d+)?$ 或 1\d*.\d*|0.\d*[1-9]\d*|0?.0+|0$
  • 非正浮點數:^((-\d+(.\d+)?)|(0+(.0+)?))$ 或 ^(-([1-9]\d*.\d*|0.\d*[1-9]\d*))|0?.0+|0$
  • 正浮點數:^[1-9]\d*.\d*|0.\d*[1-9]\d*$ 或 ^(([0-9]+.[0-9][1-9][0-9])|([0-9][1-9][0-9].[0-9]+)|([0-9][1-9][0-9]))$
  • 負浮點數:^-([1-9]\d*.\d*|0.\d*[1-9]\d*)$ 或 ^(-(([0-9]+.[0-9][1-9][0-9])|([0-9][1-9][0-9].[0-9]+)|([0-9][1-9][0-9])))$
  • 浮點數:^(-?\d+)(.\d+)?$ 或 ^-?([1-9]\d*.\d*|0.\d*[1-9]\d*|0?.0+|0)$

2.校驗字符的表達式

  • 漢字:^[\u4e00-\u9fa5]{0,}$
  • 英文和數字:^[A-Za-z0-9]+$ 或 ^[A-Za-z0-9]{4,40}$
  • 長度為3-20的所有字符:^.{3,20}$
  • 由26個英文字母組成的字符串:^[A-Za-z]+$
  • 由26個大寫英文字母組成的字符串:^[A-Z]+$
  • 由26個小寫英文字母組成的字符串:^[a-z]+$
  • 由數字和26個英文字母組成的字符串:^[A-Za-z0-9]+$
  • 由數字、26個英文字母或者下劃線組成的字符串:^\w+$ 或 ^\w{3,20}$
  • 中文、英文、數字包括下劃線:^[\u4E00-\u9FA5A-Za-z0-9_]+$
  • 中文、英文、數字但不包括下劃線等符號:^[\u4E00-\u9FA5A-Za-z0-9]+$ 或 ^[\u4E00-\u9FA5A-Za-z0-9]{2,20}$
  • 可以輸入含有^%&',;=?KaTeX parse error: Expected group after '^' at position 8: \"等字符:[^?%&',;=?\x22]+
  • 禁止輸入含有的字符:[^\x22]+

3.特殊需求表達式

  • Email地址:^\w+([-+.]\w+)@\w+([-.]\w+).\w+([-.]\w+)*$
  • 域名:[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(/.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+/.?
  • InternetURL:[a-zA-z]+://[^\s]* 或 ^http://([\w-]+.)+[\w-]+(/[\w-./?%&=]*)?$
  • 手機號碼(可根據目前國內收集號擴展前兩位開頭號碼):^(13[0-9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\d{8}$
  • 電話號碼(“XXX-XXXXXXX”、“XXXX-XXXXXXXX”、“XXX-XXXXXXX”、“XXX-XXXXXXXX”、"XXXXXXX"和"XXXXXXXX):^((\d{3,4}-)|\d{3.4}-)?\d{7,8}$
  • 國內電話號碼(0511-4405222、021-87888822):\d{3}-\d{8}|\d{4}-\d{7}
  • 15位身份證號:2\d{5}\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{2}$
  • 18位身份證號:3\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$
  • 帳號是否合法(字母開頭,允許5-16字節,允許字母數字下劃線):4[a-zA-Z0-9_]{4,15}$
  • 密碼(以字母開頭,長度在6~18之間,只能包含字母、數字和下劃線):^[a-zA-Z]\w{5,17}$
  • 強密碼(必須包含大小寫字母和數字的組合,不能使用特殊字符,長度在8-10之間):^(?=.\d)(?=.[a-z])(?=.*[A-Z]).{8,10}$
  • 日期格式:^[1-9]\d{3}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])$,例如:2014-10-12
    ^[1-9]\d{3}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])\s+(20|21|22|23|[0-1]\d):[0-5]\d:[0-5]\d$,例如:2014-10-12 12:20:00
  • 一年的12個月(01~09和1~12):^(0?[1-9]|1[0-2])$
  • 一個月的31天(01~09和1~31):^((0?[1-9])|((1|2)[0-9])|30|31)$
  1. 錢的輸入格式:
  • 有四種錢的表示形式我們可以接受:“10000.00” 和 “10,000.00”, 和沒有 “分” 的 “10000” 和 “10,000”:^[1-9][0-9]*$
  • 這表示任意一個不以0開頭的數字,但是,這也意味著一個字符"0"不通過,所以我們采用下面的形式:^(0|[1-9][0-9]*)$
  • 一個0或者一個不以0開頭的數字.我們還可以允許開頭有一個負號:^(0|-?[1-9][0-9]*)$
  • 這表示一個0或者一個可能為負的開頭不為0的數字.讓用戶以0開頭好了.把負號的也去掉,因為錢總不能是負的吧.下面我們要加的是說明可能的小數部分:^[0-9]+(.[0-9]+)?$
  • 必須說明的是,小數點后面至少應該有1位數,所以"10."是不通過的,但是 “10” 和 “10.2” 是通過的:^[0-9]+(.[0-9]{2})?$
  • 這樣我們規定小數點后面必須有兩位,如果你認為太苛刻了,可以這樣:^[0-9]+(.[0-9]{1,2})?$
  • 這樣就允許用戶只寫一位小數.下面我們該考慮數字中的逗號了,我們可以這樣:^[0-9]{1,3}(,[0-9]{3})*(.[0-9]{1,2})?$
  • 1到3個數字,后面跟著任意個 逗號+3個數字,逗號成為可選,而不是必須:^([0-9]+|[0-9]{1,3}(,[0-9]{3})*)(.[0-9]{1,2})?$
  • xml文件:^([a-zA-Z]±?)+[a-zA-Z0-9]+\.[x|X][m|M][l|L]$
  • 中文字符的正則表達式:[\u4e00-\u9fa5]
  • 雙字節字符:[^\x00-\xff] (包括漢字在內,可以用來計算字符串的長度(一個雙字節字符長度計2,ASCII字符計1))
  • 空白行的正則表達式:\n\s*\r (可以用來刪除空白行)
  • HTML標記的正則表達式:<(\S*?)[^>]>.?</\1>|<.*? />
  • 騰訊QQ號:[1-9][0-9]{4,} (騰訊QQ號從10000開始)
  • 中國郵政編碼:[1-9]\d{5}(?!\d) (中國郵政編碼為6位數字)
  • IP地址:\d+.\d+.\d+.\d+ (提取IP地址時有用)
  • IP地址:((?😦?:25[0-5]|2[0-4]\d|[01]?\d?\d)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d?\d))

  1. 1-9 ??

  2. 1-9 ??

  3. 1-9 ??

  4. a-zA-Z ??

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

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

相關文章

沙龍回顧|MongoDB如何充當企業開發加速器?

數據不僅是企業發展轉型的驅動力&#xff0c;也是開發者最棘手的問題。前日&#xff0c;MongoDB攜手阿里云、NineData在杭州成功舉辦了“數據驅動&#xff0c;敏捷前行——MongoDB企業開發加速器”技術沙龍。此次活動吸引了來自各行各業的專業人員&#xff0c;共同探討MongoDB的…

Java使用線程實現異步運行

在Java中&#xff0c;實現異步運行的一個常用方式是使用Thread類。下面&#xff0c;我將給出一個詳細且完整的示例&#xff0c;該示例將創建一個簡單的異步任務&#xff0c;該任務將模擬一個耗時的操作&#xff08;比如&#xff0c;模擬網絡請求或文件處理&#xff09;。 1. 使…

【MySQL】mysql訪問

mysql訪問 1.引入MySQL 客戶端庫2.C/C 進行增刪改3.查詢的處理細節4.圖形化界面訪問數據庫4.1下載MYSQL Workbench4.2MYSQL Workbench遠程連接數據庫 點贊&#x1f44d;&#x1f44d;收藏&#x1f31f;&#x1f31f;關注&#x1f496;&#x1f496; 你的支持是對我最大的鼓勵&a…

第9章:Electron的安全性

在開發Electron應用時&#xff0c;安全性是一個非常重要的考慮因素。由于Electron應用可以訪問Node.js的全部API&#xff0c;以及使用Web技術開發界面&#xff0c;因此需要特別注意安全問題。本章將介紹如何提高Electron應用的安全性&#xff0c;包括禁用不必要的功能、設置內容…

Javascript中Object、Array、String

Object 在JavaScript中&#xff0c;Object 類型是一種復雜的數據類型&#xff0c;用于存儲鍵值對集合。它提供了多種方法來操作這些鍵值對&#xff0c;以及執行其他常見的操作。這里&#xff0c;我列出了一些 Object 類型的常見方法或特性&#xff0c;它們在日常編程中非常有用…

開思通智網-科技快報20240704:全球首個,人工智能之城,AI填報志愿

【本周新進展】 天大開發全球首個可開源片上腦機接口智能交互系統 https://tech.opensnn.com/chip/article/2826792 AI系統繪出“多彩”大腦布線圖 https://news.sciencenet.cn/htmlnews/2024/7/525678.shtm 北京亦莊將建全域人工智能之城 https://tech.opensnn.com/chip/arti…

基于深度學習的文本框檢測

基于深度學習的文本框檢測&#xff08;Text Box Detection&#xff09;是一項重要的計算機視覺任務&#xff0c;旨在從圖像中自動檢測和定位文本區域。它在光學字符識別&#xff08;OCR&#xff09;、自動文檔處理、交通標志識別等領域具有廣泛的應用。以下是關于這一領域的系統…

快遞物流運輸中的鎖控系統優缺點探討

一、物流運輸中鎖控系統的重要性 1.1 保障貨物安全 在物流運輸過程中&#xff0c;貨物安全是物流公司最為關注的問題之一。傳統機械鎖雖然在一定程度上提供了安全保障&#xff0c;但其缺點逐漸暴露&#xff0c;成為物流運輸中的一個痛點。 易被破解&#xff1a;傳統機械鎖通…

drawio打開不顯示,不在當前屏幕的解決方案

如果把drawio拖在外接顯示器&#xff0c;關機前沒有拖回主屏幕&#xff0c;那么下次打開它時如果用的不是原來那個顯示器&#xff0c;它就無法正常顯示。在任務欄上能看到有它&#xff0c;但是就是顯示不出來。 經過卸載和其他的方式沒有解決&#xff0c;就想到了&#xff0c;應…

基于MCU平臺的HMI開發的性能優化與實戰(下)

繼上篇《基于MCU平臺的HMI開發的性能優化與實戰&#xff08;上&#xff09;》深入探討了提升MCU平臺HMI開發效率和應用性能的策略后&#xff0c;本文將專注于NXP i.MX RT1170 MCU平臺的儀表盤開發實踐。我們將重點介紹Qt for MCUs的優化技巧&#xff0c;展示如何通過實際案例應…

Qt:7.QWidget屬性介紹(cursor屬性-光標形狀、font屬性-控件文本樣式、tooltip屬性-控件提示信息)

目錄 一、cursor屬性-光標形狀&#xff1a; 1.1cursor屬性介紹&#xff1a; 1.2獲取當前光標形狀——cursor()&#xff1a; 1.3 設置光標的形狀——setCursor()&#xff1a; 1.4 設置自定義圖片為光標&#xff1a; 二、font屬性-控件文本樣式&#xff1a; 2.1font屬性介紹…

antd-Table-可視化數據滾動

代碼 // 使用方式 const Index () > {useScroll();return <Table />; }import { useEffect, useRef, useState } from react;export const useScroll (() > {let timer;function start() {const [isScroll, setIsScroll] useState(true);const scrollTopRef u…

代碼隨想錄算法訓練營Day59|110.字符串接龍、105.有向圖的完全可達性、106.島嶼的周長

字符串接龍 110. 字符串接龍 (kamacoder.com) 主要參考代碼隨想錄 代碼隨想錄 (programmercarl.com) 目標&#xff1a;得到從beginStr轉變為endStr所需的最少步數 過程&#xff1a;每次變換一個字母&#xff0c;每次變換的結果要在strList中。 對于一個圖來說&#xff0c;…

excel批量修改一列單價的金額并保留1位小數

1.打開表格&#xff0c;要把單價金額變成現在的兩倍&#xff0c;數據如下&#xff1a; 2.把單價這一列粘貼到一個新的sheet頁面&#xff0c;在B2單元格輸入公式&#xff1a;A2*2 然后按enter回車鍵,這時候吧鼠標放到B2單元格右下角&#xff0c;會出現一個黑色的小加號&#xf…

重大更新來襲!!《植物大戰僵尸雜交版V2.1+修改器+融合版》

大家好&#xff01;每個軟件更新總是令人興奮不已。前段時間介紹的《植物大戰僵尸》系列以其獨特的策略玩法和豐富的植物角色&#xff0c;贏得了很多玩家的喜愛。而在今天&#xff0c;這款經典游戲全網最新版本——《植物大戰僵尸&#xff1a;雜交版V2.1》正式推出&#xff0c;…

docker 環境下failed to start lsb故障解決

背景&#xff1a;從深信服超融合遷移虛擬機到VMWARE集群后&#xff0c;遷移后的虛擬機 centos 7 運行systemctl start network ,報錯 Restarting network (via systemctl): Job for network.service failed. See systemctl status network.service and journalctl -xn for d…

Redis組建哨兵模式

主172.17.60.131 從172.17.60.130、172.17.60.129 redis部署 [rootlocalhost app]# tar xf redis-6.2.9.tar.gz [rootlocalhost app]# cd redis-6.2.9/ [rootlocalhost redis-6.2.9]# make MALLOClibc [rootlocalhost redis-6.2.9]# make install PREFIX/usr/local/redis…

Docker 中查看及修改 Redis 容器密碼的實用指南

在使用 Docker 部署 Redis 容器時&#xff0c;有時我們需要查看或修改 Redis 的密碼。本文將詳細介紹如何在 Docker 中查看和修改 Redis 容器的密碼&#xff0c;幫助你更好地管理和維護你的 Redis 實例。 一、查看 Redis 容器密碼 通常在啟動 Redis 容器時&#xff0c;我們會…

構建LangChain應用程序的示例代碼:56、如何實現一個多智能體模擬,其中沒有固定的發言順序。智能體自行決定誰來發言,通過競價機制實現

多智能體分散式發言人選擇 示例展示了如何實現一個多智能體模擬,其中沒有固定的發言順序。智能體自行決定誰來發言,通過競價機制實現。 我們將在下面的示例中展示一場虛構的總統辯論來演示這一過程。 導入LangChain相關模塊 from typing import Callable, Listimport tenac…

正向代理反向代理

nginx的正向代理和反向代理: 正向代理以及緩存配置: 代理:客戶端不再是直接訪問服務端&#xff0c;通過代理服務器訪問服務端。 正向代理&#xff1a;面向客戶端&#xff0c;通過代理服務器的ip地址訪問目標服務端 服務端只知道代理服務器的地址&#xff0c;真正的客戶端ip可以…