JavaScript連載25-正則表達式的匹配分割替換以及貪婪模式

来源:https://www.cnblogs.com/ruigege0000/archive/2020/07/18/13334149.html
-Advertisement-
Play Games

一、test方法 var dateStr = '2020-01-01'; var dateReg = /^\d{4}-\d{2}-\d{2}$/; console.log(dateReg.test(dateStr));//test方法用於驗證是否是滿足正則表達式格式 運行結果: 二、提取正則表達式 ...


一、test方法

    var dateStr = '2020-01-01';
    var dateReg = /^\d{4}-\d{2}-\d{2}$/;
    console.log(dateReg.test(dateStr));//test方法用於驗證是否是滿足正則表達式格式

運行結果:
25.1

二、提取正則表達式

1. 正則對象.exec(要匹配的內容)

    var qqStr = "小明:15778945869,小虎:15678645678,小紅:13848956123";
    var reg = /\d+/g;
    do{
        var content = reg.exec(qqStr);//返回了一個數組,索引第一個值就是匹配的內容
        if(content){
            console.log(content[0]);
        }
    }while(content)
    //可以看出來content即使是在大括弧的外面也依然可以使用

運行結果:
25.2

2. 要匹配的內容.match(正則對象)

    var qqStr = "小明:15778945869,小虎:15678645678,小紅:13848956123";
    var reg = /\d+/g;
    var qqArr = qqStr.match(reg);
    console.log(qqArr);//返回一個匹配所有結果的列表

運行結果:
25.3

3.分組匹配的結果

  • 使用RegExp.$數字來進行提取分組表達式
    var dateStr = '2020-01-01';
    dateReg2 = /^(\d{4})-(\d{2})-(\d{2})$/;
    if(dateReg2.test(dateStr)){
        console.log(RegExp.$1);
        console.log(RegExp.$2);
        console.log(RegExp.$3);
    }

顯示結果:
25.4

4.替換

  • 要匹配的對象.replace(正則對象,新字元)
    var str2 = '              it  like   iy d ewd   dew   dd      ';
    console.log(str2.trim());//去除首尾空格
    //但是我們想要取代所有的空格,那就要用正則表達式了
    str3 = str2.replace(/\s/g,'*');//加上g就是非貪婪
    str4 = str2.replace(/\s/,"*");
    str5 = str2.replace(/\s*$/,"*");
    console.log(str3);
    console.log(str4);
    console.log(str5);

顯示結果:
25.5

5.分隔

    var dateStr3 = "2020-11-12";
    console.log(dateStr3.split("-"));//返回一個分割的列表

顯示結果:
25.6

6.貪婪與非貪婪

  • 使用?即可實現
    var str6 = "aaaaaaaaabbbbbbbbbbbbbaaaaaaaaaaaa";
    var res = str6.match(/a.*b/);//預設是貪婪模式
    var res2 = str6.match(/a.*?b/)
    console.log(res);
    console.log(res2);

顯示結果: 25.7

二、源碼:

    • D25_MethodOfMatch.html
    • 地址:https://github.com/ruigege66/JavaScript/blob/master/D25_MethodOfMatch.html
    • 博客園:https://www.cnblogs.com/ruigege0000/
    • CSDN:https://blog.csdn.net/weixin_44630050?t=1
    • 歡迎關註微信公眾號:傅里葉變換,個人賬號,僅用於技術交流,後臺回覆“禮包”獲取Java大數據學習視頻禮包
      20.4

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1.新增類型 電子郵件類型,語法<input type="email"/>,input中輸入的內容必須包含“@”,並且“@”後面必須有內容 搜索類型,語法<input type="search"/>,輸入搜索關鍵字的文本框 URL類型,語法<input type="url"/>,輸入web站點的文本 ...
  • 一、安裝node.js(https://nodejs.org/en/) 下載完畢後,可以安裝node,建議不要安裝在系統盤(如C:)。 二、設置nodejs prefix(全局)和cache(緩存)路徑 1、在nodejs安裝路徑下,新建node_global和node_cache兩個文件夾 2、設 ...
  • 1.粒子文本的實現原理 粒子文本的實現原理是:使用兩張 canvas,一張是用戶看不到的canvas1,用來繪製文本;另一張是用戶看到的canvas2,用來根據canvas1中繪製的文本數據來生成粒子。 先在canvas1中用如下的語句繪製待顯示的文本。 ctx1.font = '100px Pin ...
  • 定位 定位:通過定位可以將元素擺放在頁面中任意位置 語法:position屬性設置元素的定位 可選值:static:預設值,開啟定位 relative開啟相對定位 absolute開啟絕對定位 fixed開啟固定定位 相對定位:當元素設置position:relative;開啟元素的相對定位 1 開 ...
  • 背景是這樣的,母親節的時候,我們有個需求就是用戶可以長按或者點擊一個按鈕進行截圖後去分享我們的活動,然而我們的圖片例如頭像,採用又拍雲做 cdn 優化,所以意味著圖片的鏈接跟主頁面所在功能變數名稱不一樣,當需要需要對 canvas 圖片進行 getImageData() 或 toDataURL() 操作的時 ...
  • https://www.d3indepth.com/scales/ D3 in Depth Home About Introduction to D3 Selections Joins Enter/exit Scales Shapes Layouts Force Geographic Request ...
  • https://medium.com/@kj_schmidt/making-a-simple-scatter-plot-with-d3js-58cc894d7c97 Making a simple scatter plot with d3.js KJ Schmidt Follow Feb 20, 2 ...
  • D3 Tick Format https://bl.ocks.org/mbostock/9764126 Open By passing a format specifier to scale.tickFormat, you create a number format with precision ...
一周排行
    -Advertisement-
    Play Games
  • Timer是什麼 Timer 是一種用於創建定期粒度行為的機制。 與標準的 .NET System.Threading.Timer 類相似,Orleans 的 Timer 允許在一段時間後執行特定的操作,或者在特定的時間間隔內重覆執行操作。 它在分散式系統中具有重要作用,特別是在處理需要周期性執行的 ...
  • 前言 相信很多做WPF開發的小伙伴都遇到過表格類的需求,雖然現有的Grid控制項也能實現,但是使用起來的體驗感並不好,比如要實現一個Excel中的表格效果,估計你能想到的第一個方法就是套Border控制項,用這種方法你需要控制每個Border的邊框,並且在一堆Bordr中找到Grid.Row,Grid. ...
  • .NET C#程式啟動閃退,目錄導致的問題 這是第2次踩這個坑了,很小的編程細節,容易忽略,所以寫個博客,分享給大家。 1.第一次坑:是windows 系統把程式運行成服務,找不到配置文件,原因是以服務運行它的工作目錄是在C:\Windows\System32 2.本次坑:WPF桌面程式通過註冊表設 ...
  • 在分散式系統中,數據的持久化是至關重要的一環。 Orleans 7 引入了強大的持久化功能,使得在分散式環境下管理數據變得更加輕鬆和可靠。 本文將介紹什麼是 Orleans 7 的持久化,如何設置它以及相應的代碼示例。 什麼是 Orleans 7 的持久化? Orleans 7 的持久化是指將 Or ...
  • 前言 .NET Feature Management 是一個用於管理應用程式功能的庫,它可以幫助開發人員在應用程式中輕鬆地添加、移除和管理功能。使用 Feature Management,開發人員可以根據不同用戶、環境或其他條件來動態地控制應用程式中的功能。這使得開發人員可以更靈活地管理應用程式的功 ...
  • 在 WPF 應用程式中,拖放操作是實現用戶交互的重要組成部分。通過拖放操作,用戶可以輕鬆地將數據從一個位置移動到另一個位置,或者將控制項從一個容器移動到另一個容器。然而,WPF 中預設的拖放操作可能並不是那麼好用。為瞭解決這個問題,我們可以自定義一個 Panel 來實現更簡單的拖拽操作。 自定義 Pa ...
  • 在實際使用中,由於涉及到不同編程語言之間互相調用,導致C++ 中的OpenCV與C#中的OpenCvSharp 圖像數據在不同編程語言之間難以有效傳遞。在本文中我們將結合OpenCvSharp源碼實現原理,探究兩種數據之間的通信方式。 ...
  • 一、前言 這是一篇搭建許可權管理系統的系列文章。 隨著網路的發展,信息安全對應任何企業來說都越發的重要,而本系列文章將和大家一起一步一步搭建一個全新的許可權管理系統。 說明:由於搭建一個全新的項目過於繁瑣,所有作者將挑選核心代碼和核心思路進行分享。 二、技術選擇 三、開始設計 1、自主搭建vue前端和. ...
  • Csharper中的表達式樹 這節課來瞭解一下表示式樹是什麼? 在C#中,表達式樹是一種數據結構,它可以表示一些代碼塊,如Lambda表達式或查詢表達式。表達式樹使你能夠查看和操作數據,就像你可以查看和操作代碼一樣。它們通常用於創建動態查詢和解析表達式。 一、認識表達式樹 為什麼要這樣說?它和委托有 ...
  • 在使用Django等框架來操作MySQL時,實際上底層還是通過Python來操作的,首先需要安裝一個驅動程式,在Python3中,驅動程式有多種選擇,比如有pymysql以及mysqlclient等。使用pip命令安裝mysqlclient失敗應如何解決? 安裝的python版本說明 機器同時安裝了 ...