詳解 正則表達式

文章目錄

      • 一、概念
      • 二、作用
      • 三、語法規則
        • 3.1定義規則
        • 3.2符號簡介
        • 3.3preg_match用法詳解
        • 3.4詳解元字符
          • 3.4.1 \d和[0-9]
          • 3.4.2 \D和[^0-9]
          • 3.4.3^和$
          • 3.4.4*代表出現0次或者多次
          • 3.4.5+代表出現1次或者多次
          • 3.4.5?代表出現0次或者1次
          • 3.4.6{n}
          • 3.4.7{n,}
          • 3.4.8{n,m}
          • 3.4.9點號(.)
          • 3.5.0 x|y
          • 3.5.1 [xyz]
          • 3.5.2 [^xyz]
          • 3.5.3\b
          • 3.5.4\s
        • 3.5練習
          • 3.5.1手機號驗證案例
          • 3.5.2用戶名驗證案例
          • 3.5.3郵箱驗證
      • 四、高級運用
        • 4.1反向引用
        • 4.2貪婪模式
        • 4.3禁止貪婪模式
        • 4.4禁止貪婪模式案例

一、概念

正則表達式(regular expression)描述了一種字符串匹配的模式(pattern),可以用來檢查一個串是否含有某種子串、將匹配的子串替換或者從某個串中取出符合某個條件的子串等。

二、作用

實際當中主要用于下面幾個方面:
1、注冊頁面判斷用戶輸入的內容是否符合驗證規則
2、從整體字符串中看是否包含指定的字符串
3、找到符合規則的字符串進行替換

三、語法規則

3.1定義規則

在這里插入圖片描述

3.2符號簡介

正則表達式可以有普通符號和元字符組成。

普通字符如下:
‘/a/’代表你就要匹配字符a
‘/a7/’代表你就要匹配字符a7

元字符:
是具有特殊意義的符號
‘/\d/’ 代表要找尋數字

匹配的方法:
preg_match(reg,reg,reg,str,[$arr]);
$reg就是自己定義的正則表達式
$str是自己要查詢的字符串
$arr是匹配到的結果

在這里插入圖片描述

下面是各種符號的用法:
http://tool.oschina.net/uploads/apidocs/jquery/regexp.html

3.3preg_match用法詳解

preg_match()只要找到一次符合正則表達式的結果就終止了,不會再往下匹配
在這里插入圖片描述

preg_match_all()是匹配一次成功以后不會終止,會一直匹配到完
在這里插入圖片描述

\d和[0-9]是一個意思
在這里插入圖片描述

3.4詳解元字符

3.4.1 \d和[0-9]

代表數字 參照上面

3.4.2 \D和[^0-9]

\D代表非數字和[^0-9]是一個意思
在這里插入圖片描述

^在中括號中代表非
在這里插入圖片描述

3.4.3^和$

^如果直接放在定界符前面代表以。。。開頭
在這里插入圖片描述

$代表以。。。。結尾
在這里插入圖片描述

3.4.4*代表出現0次或者多次

zo*能匹配“z”以及“zoo”。*等價于{0,}。
在這里插入圖片描述

3.4.5+代表出現1次或者多次

zo+”能匹配“zo”以及“zoo”,但不能匹配“z”。+等價于{1,}。
在這里插入圖片描述

3.4.5?代表出現0次或者1次

“do(es)?”可以匹配“does”或“does”中的“do”。?等價于{0,1}。
在這里插入圖片描述

3.4.6{n}

{n}代表固定出現n次
“o{2}”不能匹配“Bob”中的“o”,但是能匹配“food”中的兩個o。
在這里插入圖片描述

3.4.7{n,}

{n,}代表最少出現n次,多者不限

o{2,}”不能匹配“Bob”中的“o”,但能匹配“foooood”中的所有o。“o{1,}”等價于“o+”。“o{0,}”則等價于“o*”
在這里插入圖片描述

3.4.8{n,m}

{n,m}代表最少出現n次,最多出現m次

“o{1,3}”將匹配“fooooood”中的前三個o。“o{0,1}”等價于“o?”。請注意在逗號和兩個數之間不能有空格
在這里插入圖片描述

3.4.9點號(.)

表示匹配除了\n(換行符以外的任意單個字符)

在這里插入圖片描述

如果要表示真正的點號必須用.

在這里插入圖片描述

3.5.0 x|y

豎線代表是或者的意思
在這里插入圖片描述

3.5.1 [xyz]

[xyz]點匹配xyz中的任意一個字符

在這里插入圖片描述

3.5.2 [^xyz]

[^xyz]代表除了x y z以外的任意單個字符

在這里插入圖片描述

3.5.3\b

\b代表匹配單詞的邊界
在這里插入圖片描述

如果是如下什么也匹配不到

在這里插入圖片描述

3.5.4\s

\s匹配任何空白字符,包括空格、制表符、換頁符等等。等價于[ \f\n\r\t\v]。

在這里插入圖片描述

3.5練習

自己一個正則表達式,驗證手機號11位 都是數字

3.5.1手機號驗證案例

在這里插入圖片描述

3.5.2用戶名驗證案例

用戶名可以是數字 字母 下劃線 中橫線 個數是3-8位
在這里插入圖片描述

在這里插入圖片描述

3.5.3郵箱驗證

在這里插入圖片描述

四、高級運用

4.1反向引用

在正則表達式中出現小括號,是把小闊號中的內容當做子單元來使用
在這里插入圖片描述

示例:
比如:你的字符串$str=‘aaaahttp://www.baidu.comdddd’;
然后你把里面的網址匹配出來替換成一個a標簽

preg_replace(正則表達式,替換成什么,源字符串)
在這里插入圖片描述

4.2貪婪模式

正則表達式里會盡可能多的匹配的元素
在這里插入圖片描述

4.3禁止貪婪模式

讓正則表達式盡可能少的匹配結果
在這里插入圖片描述

在這里插入圖片描述

4.4禁止貪婪模式案例

如果我們這樣寫會盡可能多的匹配
在這里插入圖片描述

我們讓它盡可能少的匹配

在這里插入圖片描述

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

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

相關文章

Java:控制臺輸入車輛信息,將信息保存至數據庫中

程序功能:控制臺輸入車輛信息,將信息保存至數據庫中 程序代碼如下: BaseDao.java package DAO_dome.kehozuoye; import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;i…

echars 3D地圖為區域自定義顏色

echars 3D地圖為區域自定義顏色問題延伸解決問題問題 根據項目需求,我們要將下面省級地圖中的個別市進行高亮(不同顏色)展示 延伸 首先跟大家介紹這個地圖的展示方式: 采用的是Vue框架中運用echarts地圖采用的是geo3D和scatt…

linux每日命令(31):tar命令

閱讀目錄(Content) 一.命令格式二. 命令功能三. 命令參數必要參數選擇參數四. 常見解壓、壓縮命令tar.gz.tar.gz 和 .tgz.bz2.tar.bz2.bz.tar.bz.Z.tar.Z.zip.rar五. 使用實例1:將文件全部打包成tar包2:查閱上述 tar包內有哪些文件3&#xff…

一文帶你吃透BFC

文章目錄面試高出場率什么是BFC觸發BFC的條件BFC的約束規則BFC可以解決的問題面試高出場率 在前端的面試中,經常會遇到BFC的問題,比如:說說你對BFC的理解、你在項目中運用到的BFC、BFC是什么、BFC的作用是什么。。。。 很多同學很懵逼&…

基于Python語言使用RabbitMQ消息隊列(一)

介紹 RabbitMQ 是一個消息中間人(broker): 它接收并且發送消息. 你可以把它想象成一個郵局: 當你把想要寄出的信放到郵筒里時, 你可以確定郵遞員會把信件送到收信人那里. 在這個比喻中, RabbitMQ 就是一個郵筒, 同時也是郵局和郵遞員 . 和郵局的主要不同…

爆贊程序猿開發軟件

VSCode 使用 IntelliSense 超越語法突出顯示和自動完成,它提供基于變量類型、函數定義和導入模塊的智能完成 直接從編輯器調試代碼。啟動或附加到您正在運行的應用程序并使用斷點、調用堆棧和交互式控制臺進行調試 與 Git 和其他 SCM 提供商合作從未如此簡單。查…

如果你在北京失業了,別怕,記得去領這筆錢!最少2034元/月!

人在江湖飄,哪能不挨刀 公司倒閉,老板走人,公司裁人 …… 就要被迫失業了 別怕! 如果你在北京失業了 記得去領這筆錢——失業保險金 每月最多有2143元 雖然錢不多,但能解燃眉之急 幫助你度過困難日子 重點全程網上就能…

真實詮釋程序員日常的二十四張圖【你中了幾個】

當你打開遺留代碼時 扒下來項目后改了一行代碼…… 程序員調試css樣式的時候 當你的try catch 不起作用 產品經理對你說要兼容IE 沒有ui給你提供大小設計的結果 沒吃透需求直接開發的你 程序員修復bug的真實處境 當你開始使用庫,但忘記閱讀文檔 產品經理告訴你這只是…

Git學習原版手稿

手稿誕生記 Git學習的時候難免會有遺忘然后往復學習查看的過程,所以就形成了這個學習的手稿,記錄了Git使用過程中的大部分命令,今天在清理的時候偶然看到了這些記錄,而且最近也在寫Git的使用教程,大致的學習線路也是按…

程序員首選編程電腦【火爆來襲】

作為一名程序員肯定會常用到一些編程軟件,所以需要設備的配置參數上不能太差,不僅是要以穩定強大輸出為基本,內存、音響、續航等方面也不可或缺。 直奔主題 如果你手里資金到位,那必須整一步到位——MacBook 對于這款大佬型筆記本…

201671010456-張瓊 實驗十四 團隊項目評審課程學習總結

博文簡要信息表 項目內容這個作業屬于哪個課程http://www.cnblogs.com/nwnu-daizh/這個作業的要求在哪里https://www.cnblogs.com/nwnu-daizh/p/11093584.html課程學習目標掌握軟件項目評審會流程,反思總結課程學習內容。任務一 驗收意見表GitHub倉庫地址https://gi…

強大的APIClound云修復——告別繁瑣的編譯打包流程

小編接到一項目的二期開發任務,拉下代碼開始熟悉大概的框架、技術、上線流程等前期工作,本app是通過vue技術進行開發,使用ui是 vant 庫,打包上線則是使用的 APIClound 平臺; 在我們的app上線后,如果我們改…

研究下貝塞爾曲線

今天研究了下貝塞爾曲線,感覺還是很有價值的。 這里貝塞爾曲線是幾個用法: 1.模擬曲線擬合。將折線找一個平滑的方案獲得曲線的效果。聯想可以獲知,可以作為工程設計的一種方式。 2.模擬拋物線和實際場景中的一些物理特性,即物理上…

你對ES6究竟了解多少?—— 有這一篇就夠用了

1. ES6相關概念(★★) 1.1 什么是ES6 ES 的全稱是 ECMAScript , 它是由 ECMA 國際標準化組織,制定的一項腳本語言的標準化規范。ES6 是ES2015以后的泛稱 1.2 為什么使用 ES6 ? 每一次標準的誕生都意味著語言的完善,功能的加強。JavaScrip…

科創板基礎知識

交易制度 1、上市前5個交易日不設將跌幅限制;其后漲跌幅限制為 20%; 2、單筆申報不小于 200股。 參考資料: 科創板圖文解讀 科創板投教長圖文系列(四):詳解科創板股票交易的特別規定 上交所投教&#xff1a…

0_0 保留字

引自《 JavaScript 權威指南》2.4 / P28 ~ 29 保留字 部分 保留字 JavaScript 把一些標識符拿出來用作自己的關鍵字。因此,就不能再在程序中把這些關鍵字用作標識符了: 保留字 Part1.txt123456breakdelete functionreturntypeofcasedoifswitchvarc…

JavaScript 高級——詳談面向對象

1.面向過程與面向對象 1.1面向過程 面向過程就是分析出解決問題所需要的步驟,然后用函數把這些步驟一步一步實現,使用的時候再一個一個的依次調用就可以了。 1.2面向對象 面向對象是把事務分解成為一個個對象,然后由對象之間分工與合作。…

UVa202Repeating Decimals (循環小數)

解答&#xff1a; 因為除數是固定的&#xff0c;所以只要判斷被除數是否出現過即可。 #include<iostream> #include <cstdio> #include <cstring> using namespace std; int m,n,vis[5000],res[5000],temp[5000],num,t,x; int main() {while(scanf("%d%…

構造函數、原型、繼承原來這么簡單?來吧,深入淺出

構造函數 小編上篇博客中介紹到的通過關鍵字class方式定義類&#xff0c;然后根據類再創建對象的方式&#xff0c;是ES6中語法&#xff0c;現在很多瀏覽器對ES6的支持還不是很好&#xff0c;所以也要學習通過構造函數&#xff08;構建函數&#xff09;的方式創建對象 問&…

[網絡流24題] 航空路線問題 (費用流)

洛谷傳送門 LOJ傳送門 這道題的圖還挺好想的吧 反正都是無向邊&#xff0c;起點走到終點再回到起點&#xff0c;就相當于從起點走$2$次到達終點&#xff0c;且這兩次不經過相同的點&#xff0c;還要經過盡可能多的點 很經典的費用流建圖 限制點通過次數->拆點連邊&#xff0…