詳細介紹正則表達式

2020-10-08 前端開發小白

正則是獨立於程式語言的一個學科,用於解決模式匹配問題,Javascript提供了對於正則支持,此外,Java、c、python也都支持正則。正則可以應用在:檢索,替換,爬蟲,論文查重等領域。

實例化正則表達式對象

  1. 字面量
    var pattern = /正則表達式/標記
    var pattern = /abc/igm
  2. 構造函數
    var pattern = new RegExp(「正則表達式」,「標記」);
    var pattern = new RegExp(「abc」,「igm」);
    標記:
    i ignoreCase 忽略大小寫
    g global 全局
    m multiline 多行
    u unicode 任何 Unicode 代碼點的轉義都會被解釋。
    y sticky 屬性反映了搜索是否具有粘性

正則表達式

  1. 直接量
    abc 例如:/abc/ 查找目標串中是否含有abc
  2. 字符類
    [abc] 例如:/[abc]/ 查找目標串中是否含有abc中任意一個字符
    [^abc] 例如:/[^abc]/ 查找目標串中是否含有除了abc之外任意一個字符
    [a-z] a~z中的任意一個字符
    \w 字母 [a-zA-Z0-9]
    \W 非字母 [^a-zA-Z0-9]
    \d 數字 [0-9]
    \D 非數字[^0-9]
    \s 空白符
    \S 非空白符多行模式下
    ^ 以…開始 /^\d\w{3}\d$/ 以為數字開頭,以數字結尾
    $ 以…結尾
  3. 數量詞
    數量一般使用在子表達式(直接量,字符類,分組…)後
    /1[3578]\d{9}/
    {9} 重複9次
    {1,9} 重複1~9次
    {1,} 重複1次及以上
    {0,} 重複0次及以上
    * 等價於{0,}
    + 等價於{1,}
    ? 等價於{0,1}貪婪匹配
    默認是貪婪匹配
    {1,9} 優先匹配9次
    非貪婪匹配
    數量詞後添加?就成為了非貪婪匹配
    {1,9}? 優先匹配1次
  4. 選擇
    表達式中間添加"|"表示選擇
    例如:
    /hello|hi/
  5. 分組
    獲取目標字符串中所有的url,並且分別拿到協議,ip,port,路徑
    url 協議://ip:port/路徑

var pattern =
/(http|https|ftp|svn) \ : //((\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3})|(www.\w{2,}.com)):?(\d{2,5})(/[a-z0-9/]{2,})/ig
/() : //(()|()): ()()/

  1. 引用
    通過"\數字"對之前分組匹配結果的一種引用。\1 就表示對第一個分組匹配結果的引用

var str = 「12hello12」
var str = 「871wrold871」
var str = 「871wrold888」

var pattern = /(\d{2,})\w+\1/

API

1.實例屬性
RegExp.prototype.flags 標記
RegExp.prototype.source 正則字符串
RegExp.prototype.ignoreCase
RegExp.prototype.global
RegExp.prototype.multiline
RegExp.prototype.unicode
RegExp.prototype.sticky

這裡有個簡單的例子來直接的理解這些屬性的作用:

var pattern = /hello/igm;console.log(pattern);// /hello/gimconsole.log("source:",pattern.source);// source: helloconsole.log("flags:",pattern.flags);// flags: gimconsole.log("ignoreCase:",pattern.ignoreCase);// ignoreCase: trueconsole.log("global:",pattern.global);// global: trueconsole.log("multiline:",pattern.multiline);// multiline: trueconsole.log("unicode:",pattern.unicode);// unicode: false123456789

對了,在這裡說一下,我目前是在職web前端開發,如果你現在正在學習前端,了解前端,渴望成為一名合格的web前端開發工程師,在入門學習前端的過程當中有遇見任何關於學習方法,學習路線,學習效率等方面的問題,都可以隨時關注並私信我:前端,我都會根據大家的問題給出針對性的建議,缺乏基礎入門的視頻教程也可以直接來找我,我這邊有最新的web前端基礎精講視頻教程, 還有我做web前端技術這段時間整理的一些學習手冊,面試題,開發工具,PDF文檔書籍教程,都可以直接分享給大家。

2.實例方法

RegExp.prototype.test(str)

目標字符串中是否可以滿足正則表達式的匹配要求
支持全局匹配。當全局匹配的時候,會在正則表達式對象pattern上維 護一個變量 lastIndex,表示下次開始檢索的位置。
參數:字符串
返回值:boolean

RegExp.prototype.exec(str)

從目標字符串中獲取滿足正則表達式匹配要求的子串。
支持全局匹配。當全局匹配的時候,會在正則表達式對象pattern上維護一個變量,lastIndex,表示下次開始檢索的位置。
參數:字符串
返回值:數組
數組元素為匹配的結果
exec的返回值的數組中的第一個元素整體匹配的結果, 第二個元素為第一個分組結果, 第三個元素為第二個分組的結果
數組屬性index表示當前子串在目標串中的位置,input表示目標串,groups表示分組

以下是一個檢索網址的例子:

//檢索網址var str = "hello , i am terry, my website is http://134.175.154.93:8888/personal/index.html, ftp url is ftp://172.16.0.20/webui , my phone 18812345432, my friend is larry ,his telephone is 13710009999,his web site is http://www.larry.com/personal/my.index.html , his email is larry@briup. com, my other first is jacky, his telephoen is 17751229900";//網址的正則表達式var a = /(http|https|ftp|svn)\:\/\/((\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})|(www\.\w{2,}\.com))\:?(\d{2,5})?(\/[a-z0-9/]{2,})/iglet result = null;while(result = a.exec(str)){ console.log(result);}1234567891011

輸出的結果:

[ 'http://134.175.154.93:8888/personal/index',//整體的匹配結果 'http',//第一個分組結果 '134.175.154.93', '134.175.154.93', undefined, '8888', '/personal/index', index: 34, //當前子串在目標串中的位置 input: 'hello , i am terry, my website is http://134.175.154.93:8888/personal/index.html, ftp url is ftp://172.16.0.20/webui , my phone 18812345432, my friend is larry ,his telephone is 13710009999,his web site is http://www.larry.com/personal/my.index.html , his email is larry@briup. com, my other first is jacky, his telephoen is 17751229900', //檢索的目標串 groups: undefined//分組][ 'ftp://172.16.0.20/webui', 'ftp', '172.16.0.20', '172.16.0.20', undefined, undefined, '/webui', index: 93, input: 'hello , i am terry, my website is http://134.175.154.93:8888/personal/index.html, ftp url is ftp://172.16.0.20/webui , my phone 18812345432, my friend is larry ,his telephone is 13710009999,his web site is http://www.larry.com/personal/my.index.html , his email is larry@briup. com, my other first is jacky, his telephoen is 17751229900', groups: undefined][ 'http://www.larry.com/personal/my', 'http', 'www.larry.com', undefined, 'www.larry.com', undefined, '/personal/my', index: 206, input: 'hello , i am terry, my website is http://134.175.154.93:8888/personal/index.html, ftp url is ftp://172.16.0.20/webui , my phone 18812345432, my friend is larry ,his telephone is 13710009999,his web site is http://www.larry.com/personal/my.index.html , his email is larry@briup. com, my other first is jacky, his telephoen is 17751229900', groups: undefined]123456789101112131415161718192021222324252627282930313233343536

總結
這篇是我在學習js正則時總結的一些基礎,掌握!



原文連結:https://blog.csdn.net/wt1310445488/article/details/108939299?utm_medium=distribute.pc_category.none-task-blog-hot-5.nonecase&depth_1-utm_source=distribute.pc_category.none-task-blog-hot-5.nonecase&request_id=

作者:wt1310445488

相關焦點

  • 「小白學爬蟲連載(3)」——正則表達式詳細介紹
    歡迎大家關注公眾號【哈希大數據】小白學爬蟲系列(2)中介紹了如何用Requests獲取網頁內容,可是HTML文檔中的內容比較繁雜,如何提取出我們需要的信息呢?本篇文章為大家介紹一個用於文本信息提取的強有力的工具——正則表達式。
  • 正則表達式在VBA中間是如何應用?正則表達式的實現方式?
    Hi,大家好,本章節開始將會從零開始和大家用圖文的方式,讓你從零基礎學會正則表達式!有興趣的小夥伴可以持續關注我,或者在專欄中進行查看自我學習,願與君攜手前行!在上一個章節說到正則表達式的入門級知識點,本節將會與大家分享一下正則表達式的是具體實現方式是怎麼樣的?
  • 正則表達式 – 簡介
    1956 年, 一位叫 Stephen Kleene 的數學家在 McCulloch 和 Pitts 早期工作的基礎上,發表了一篇標題為"神經網事件的表示法"的論文,引入了正則表達式的概念。正則表達式就是用來描述他稱為"正則集的代數"的表達式,因此採用"正則表達式"這個術語。
  • java正則表達式入坑指南
    在日常開發工作中,無論你使用的語言是java、python、shell、golang還是C#, 正則表達式是程式語言中幾乎繞不開的話題。有了它,可以幫你快速定位到符合條件的文本內容。今天小編帶大家一起來學習下正則表達式,相信通過這篇文章的介紹,能為以後的工作提供一個更清晰的思路。
  • 正則表達式中的 .*? 或 .*+ 的意思
    正則表達式簡介正則表達式,又稱規則表達式。(英語:Regular Expression,在代碼中常簡寫為regex、regexp或RE),計算機科學的一個概念。正則表達式通常被用來檢索、替換那些符合某個模式(規則)的文本。許多程序設計語言都支持利用正則表達式進行字符串操作。例如,在Perl中就內建了一個功能強大的正則表達式引擎。
  • 漫談Linux中的正則表達式
    一、概述正則表達式(Regular Expression)通常被用來檢索、替換那些符合某個模式(規則)的文本。目前多種程序開發語言均支持常規的正則表達式。作為一名系統、運維工程師,正則表達在日常工作中也比較常用。因此,掌握常用的正則表達式顯得十分重要。
  • JavaScript正則表達式常用技巧
    正則表達式的掌握程度能粗略地看出程式設計師的技術底子,所以技術面試、編程競賽等 都特別喜歡考察正則表達式。本篇就帶你一起夯實一下 JavaScript 正則表達式的一些使用技巧:創建正則表達式在 JavaScript 的世界,創建正則表達式有2個方法: (1)使用一個正則表達式字面量,其由包含在斜槓之間的模式組成。
  • Python正則表達式簡介
    為此,我們可以使用正則表達式(Regular Expression,Regex)。在本文中,我將向你展示它的概念和應用,以解決數據科學中的問題,特別是使用Python對文本進行預處理。大綱我將本文分為兩個部分:正則表達式的概念正則表達式的應用正則表達式的概念正則表達式,或者我們稱之為Regex或RE,是一種特殊類型的字符串,可用於匹配字符串中的術語或單詞。
  • 看完你就會正則表達式了
    最近看了一篇關於正則表達式的學習筆記,覺得講的非常好,更有圖形化的神器相助,想不學會都難,所以想轉給大家看看。話說不是開發為啥要學正則表達式這種看似很晦澀的東西呢,因為現在很多搜索的場景都是支持正則表達式的,學會了正則表達式就有如一把利劍在手。本文較長,建議抽40分鐘完整的時間一次讀完再慢慢消化。
  • 「正則表達式」 python中的使用
    正則表達式的介紹在實際開發過程中經常會有查找符合某些複雜規則的字符串的需要,比如:郵箱、圖片地址、手機號碼等,這時候想匹配或者查找符合某些規則的字符串就可以使用正則表達式了。2.正則表達式概念正則表達式就是記錄文本規則的代碼3. 正則表達式的樣子0\d{2}-\d{8} 這個就是一個正則表達式,表達的意思是匹配的是座機號碼4.
  • JavaScript正則表達式元字符介紹
    正則表達式正則表達式是一個描述字符模式的對象,用於字符匹配創建正則表達式使用 new 運算符var reg = new RegExp('Box');// 要傳一個參數,該參數是模式字符串// 第二個參數可選,模式修飾符,i 忽略大小寫;g
  • 給JAVA程式設計師的正則表達式一課
    正則基礎正則表達式(Regex,簡稱RE)是一種根據字符串集中的每個字符串的共同特徵來描述字符串集的方法。可用於搜索,編輯或處理文本和數據。簡單來說,正則表達式是幫助我們根據特定格式驗證或匹配字符串的方式。可以類比資料庫的SQL語言,sql是搜索數據,RE是搜索字符串。正則表達式和SQL語言是開發界的兩個偉大發明。
  • Python「正則表達式」詳解(上)
    大家好,今天我們一起學習以下Python中的「正則表達式」,說到正則表達式,大家可能比較陌生,不過我卻要告訴你,你每天都在使用正則表達式,不要不承認,就問你最常見的,瀏覽器每天用不?淘寶經常逛不?你在搜索框裡輸入幾個文字,按下回車,就出來大量結果,你想想這是怎麼辦到的,是正則表達式,可以好不誇張的講,沒有正則表達式,就沒有搜尋引擎。
  • 正則表達式速查手冊
    本文包括正則表達式流派介紹,常用元字符、元轉義序列、特殊構造等語法元素整理,以及匹配模式、方括號表達式以及字符組運算等,可以作為正則表達式日常使用查閱手冊。流派目前正則表達式主要有兩大流派:POSIX 流派與 PCRE 流派。
  • Python正則表達式的七個使用範例
    作為一個概念而言,正則表達式對於Python來說並不是獨有的。但是,Python中的正則表達式在實際使用過程中還是有一些細小的差別。本文引用地址:http://www.eepw.com.cn/article/201807/383660.htm本文是一系列關於Python正則表達式文章的其中一部分。
  • Python(2):正則表達式的常見符號與作用,每個都有示例
    承接上篇文章,本文將羅列出Python中正則表達式常用的符號,也叫做元字符,正是憑藉元字符正則表達式方才展現出強大的檢索功能和受人青睞的靈活性。常見的正則表達式特殊符號為了便於讀者保存,這裡把符號以表格圖片的形式總結給大家,並就常見的正則表達式給出簡單的示例供大家參考、學習。點號(.)-匹配除換行符\n外的任意單個字符示例:a.o—匹配字母a和o且二者中間為任意單字符的字符串,如axo,a!
  • mysql基礎知識——正則表達式(上)
    今天,要給大家說的是正則表達式!正則表達式的作用正則表達式也叫做匹配模式(Pattern),它由一組具有特定含義的字符串組成,通常用於匹配和替換文本。正則表達式的語法SELECT column1, column2, ...
  • 使用JavaScript對正則表達式進行解析
    我的目的不是要嚇你,一旦我們了解了正則表達式那它就變得很簡單:讓人畏懼.....今天,我們將揭開正則表達式的神秘面紗,看到它的含義,它的用途以及如何設計正則表達式來解決問題。1、什麼是正則表達式?正則表達式是描述數據字符串中模式的一種方式。
  • Python學習第135課——初步了解正則表達式以及正則表達式的用法
    從現在開始,我們學習正則表達式。正則表達式,又稱規則表達式。(英語:Regular Expression,在代碼中常簡寫為regex、regexp或RE),計算機科學的一個概念。正則表達式通常被用來檢索、替換那些符合某個模式(規則)的文本。簡單說,正則表達式就是查找、替換字符串的模式,這種模式也是一個字符串序列。
  • 第二篇詳細Python正則表達式操作指南(re使用)
    執行匹配一旦你有了已經編譯了的正則表達式的對象,你要用它做什麼呢?`RegexObject` 實例有一些方法和屬性。這裡只顯示了最重要的幾個,如果要看完整的列表請查閱 Python Library Reference如果沒有匹配到的話,match() 和 search() 將返回 None。