JaveScript 中的正則表達式

来源:https://www.cnblogs.com/xixiuling/archive/2018/12/06/10078451.html
-Advertisement-
Play Games

1.語法: var expression = /pattern/flags ; pattern: 任何簡單或複雜的正則表達式。 flags: 可以是 g,i,m 或它們的組合。 g:表示全局模式,即模式將被應用於所有字元串,而非在發現第一個匹配項時就立即停止。 i:表示不區分大小寫。 m:表示多行, ...


1.語法: 

  var expression = /pattern/flags ;

  pattern: 任何簡單或複雜的正則表達式。

        flags: 可以是 g,i,m 或它們的組合。

                   g:表示全局模式,即模式將被應用於所有字元串,而非在發現第一個匹配項時就立即停止。

                      i:表示不區分大小寫。

                      m:表示多行,及在到達一行文本末尾時還會繼續查找下一行。

        例子:

         匹配字元串中所有有"at"的實例

          var pattern1=/at/g

2.模式中的所有元字元都必須轉義。

          元字元: ({\^$|)?*+.]}

       例子: 匹配所有“.at”, 不區分大小寫

  var pattern2 = /\.at/gi

3.RegExp 實例方法:

      exec() : 接受一個參數,即要應用模式的字元串,然後返回包含第一個匹配項信息的數組,或者沒有匹配項的情況下返回null.返回的數組雖然是Array 的實例,但包含兩個額外的屬性:index和input。其中index表示匹配項在字元串中的位置,而input表示應用正則表達式的字元串。

                    在數組中,第一項是與整個模式匹配的字元串。其它項是與模式中的捕獲組匹配的字元串。如果沒有捕獲組,數組只有一項。

       例子:   

              var text =“mom and dad and body"

               var parrern =/mom( and dad( and bady)?)?/gi

              var matches = parrern.exec(text);

               alert(matches.index);  //0

               alert(matches.input);  //“mom and dad and body"

               alert(matches[0]);      //“mom and dad and body"

               alert(matches[1]);      //" and dad and bady"

               alert(match[2]);          //" and bady"

       對於exec()方法而言,即使在模式中設置了全局標誌(g),它每次也只會返回一個匹配項。在不設置全局標誌的情況下,在同一字元串上調用exec()將始終返回第一個匹配項的信息。而設置全局標誌情況下,每次調用exec()則會在字元串中繼續查找新的匹配項。

       例子:

               var  text ="cat , bat, sat, fat";

               var pattern1 =/.at/;                    //非全局模式

               var matches = pattern1.exec(text);

               alert(matches.index);        //0

               alert(matches[0]);             //cat

               alert(pattern1.lastIndex);  //0

 

               matches = pattern1.exec(text);

               alert(matches.index);        //0

               alert(matches[0]);             //cat

               alert(pattern1.lastIndex);  //0

 

               var pattern2 =/.at/g;             //全局模式

               var matches = pattern2.exec(text);

               alert(matches.index);        //0

               alert(matches[0]);             //cat

               alert(pattern2.lastIndex);  //3

 

               matches = pattern2.exec(text);

               alert(matches.index);        //5

               alert(matches[0]);             //bat

               alert(pattern2.lastIndex);  //8

       

       正則表達式的第二個方法是 test(), 它接受一個字元串參數,在模式與該參數匹配的情況下返回true;否則返回false. 在只想知道目標字元串與模式是否匹配時很方便。

 

4.RegExp 構造函數屬性

     RegExp 構造函數包含一些屬性,這些屬性適用於作用域中的所有正則表達式,並且基於所執行的最近一次正則表達式操作而變化。   

屬性名 說明
input 最近一次要匹配的字元串
lastMatch 最近一次的匹配項
lastParen 最近一次匹配的捕獲組
leftContext input字元串中lastMatch之前的文本
multiline

布爾值,表示是否所有表達式都是多行模式   

rightContext

input字元串中lastMatch之後的文本

 

 

 

 

 

 

      使用這些屬性可以從exec()或test()執行的操作中提取出更具體的信息.

      例子:

           var text ="this has been a short summer";

           var pattern = /(.)hort/g;

 

             if(pattern.test(text)){

            alert(RegExp.input);                    //this has been a short summer

                 alert(RegExp.leftContext);          //this has been a

                 alert(RegExp.rightContext);        //summer

                 alert(RegExp.lastMatch):            //short

                 alert(RegExp.lastParen):            //s

                 alert(RegExp.multiline):              //false

              }

 


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

-Advertisement-
Play Games
更多相關文章
  • ...
  • 編碼1(棧頂在最右) 練習如何使用數組來實現棧,綜合考慮使用數組的 push,pop,shift,unshift操作 基於代碼,實現如按鈕中描述的功能: 實現如閱讀材料中,隊列的相關進棧、退棧、獲取棧頂、判空的操作 棧頂對應數組中最後一個元素 進棧和退棧操作後,需要在 id 為 stack-cont ...
  • 一、HTML基本構造 <html>(告知瀏覽器其自身是一個HTML文檔) <head>(定義文檔的頭部) <title>這是網頁的標題</title>(定義文檔的標題) </head> <body>(定義文檔的主體) 這裡是網頁的內容 <p>這裡是一個文本段</p> </body> </html> ...
  • forEach是ES5中操作數組的一種方法,主要功能是遍曆數組,例如: 1 2 var arr = [1,2,3,4]; arr.forEach(alert); 1 2 var arr = [1,2,3,4]; arr.forEach(alert); 1 2 var arr = [1,2,3,4]; ...
  • 獲取滑鼠的位置信息: 1.e.clientX和e.clientY,滑鼠在瀏覽器視口中的坐標 2.e.pageX和e.pageY,滑鼠游標在頁面中的位置 3.e.screenX和e.screenY,滑鼠相對於整個屏幕的坐標信息 jquery計算元素的位置與寬高 1.obj.clientWidth和ob ...
  • HTML概述 一、HTML定義 HTML(HyperText Markup Language)超文本標記語言,寫給瀏覽器的語言,目前網路上應用最廣泛的語言。 目前已更新到HTML5,HTML添加了一些新的語義化標簽及新特性,放棄了一些就標簽。 主流瀏覽器:IE、Firefox、Chrome、Gool ...
  • 基本選擇器 1、通用元素選擇器 *表示應用到所有的標簽。 *{ padding:0px; margin:0px; } 2、元素/標簽選擇器 匹配所有p標簽的元素 p{ color:red; background:yellow; } 3、類選擇器 匹配所有class屬性中包含“起的類名”的元素。 語法 ...
  • #我的VUE框架學習 題記:初識VUE,覺得VUE十分的不錯,故決定去深入的瞭解學習它,工欲善其事,必先利其器,下麵是我搭建vue環境的過程! #一.項目搭建及初始化 1.安裝:node.js;去官網下載:https://nodejs.org/en/ 2.安裝cnp:mnpm install -g ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...