正則表達式學習1

来源:http://www.cnblogs.com/yang-C-J/archive/2017/01/09/6263066.html
-Advertisement-
Play Games

正則表達式 一、正則表達式定義 JavaScript 正則表達式 正則表達式(英語:Regular Expression,在代碼中常簡寫為regex、regexp或RE)使用單個字元串來描述、匹配一系列符合某個句法規則的字元串搜索模式。 搜索模式可用於文本搜索和文本替換。 簡單的說就是一個有規則的表 ...


正則表達式

 

一、正則表達式定義

JavaScript 正則表達式

 

正則表達式(英語:Regular Expression,在代碼中常簡寫為regexregexpRE)使用單個字元串來描述、匹配一系列符合某個句法規則的字元串搜索模式。

搜索模式可用於文本搜索和文本替換。

簡單的說就是一個有規則的表達式,用於查找的通配符。

正則表達式就是一個用於查找含有匹配字元串 字元串

二、正則表達式對象

 

 

Js 正則表達式對象 就是 由正則表達式創建的對象,該對象可以進行匹配,提取和替換。

 

創建正則表達式對象

 

1、構造函數

 

var regex = new RegExp( 正則表達式字元串[, 匹配模式] );

 

 

 

匹配模式是可選參數:是一個可選的參數,包含屬性 gim,分別使用與全局匹配,不區分大小寫匹配,多行匹配;

 

2、字面量 (直接量)

 

var regex = /正則表達式/;

 

 三、使用正則表達式進行匹配

 

 語法:

  正則對象.test( 字元串 )

   返回一個boolean

  如果參數字元串中含有 符合 正則匹配的 子字元串, 就返回 true, 否則返回 false

例如查詢一段文字中是否包含 yangCJ

四、基本元字元

    .[^\n\r] 除了換行和回車之外的任一字元

( )表示分組和提高優先順序

[ ]表示一個字元, 出現在 [ ] 中的字元

      用法: [abc]出現 [ ] 中的任意一個字元

      匹配 a, b, c

      foo[dt] 匹配 foot 或 food

| (優先順序是最低的,需最後考慮)

      用法:正則表達式|正則表達式

      選取foot food

      foot|food

      foo(t|d)

擴展:

    . 任意的一個字元. 沒有任何限制

    []是出現在[]中的一個字元. 認為 . 的限制級版本

      [abc]: a 或者 b 或者 c

    |可以認為是 允許使用多個字元的 匹配

      a|b|c

      aa|bb|cc

 

如果要表示 .  [] () 這些符號 就要使用轉義字元

  轉義字元

  表示點:   \.

  表示[]:   \[  \]

  表示():  \(  \)

  表示\ :   \\

五、限定元字元

1>

*緊跟前面的一個字元或一組字元出現 0 次到多次

次數大於等於0

    表示: 123333333 後面很多 3

      正則: 1233*

      123 0

      1233 1

      12333 2

      ...

      1233333333333333333

也能表示一個組的次數

      1(23)*

      表示:

        1 (出現0次)

        1 23 (出現1次)

        1 23 23 (出現2次)

        1 23 23 23(出現3次)

2>

+緊跟在前面的字元出現 1 次到多次

次數大於等於1

    字元串: 123333333

      正則:   123+

   

3>

 ?緊跟在前面的字元出現 0 次或 1

 

檢查在一段字元串中檢查是否含有 http 協議的字元串或 https 協議的字元串

https?://.+

 

4>

{數字}緊跟在前面的字元出現指定次數

      a{3}

        匹配3個a 

        aaa

5>

{數字,}緊跟在前面的字元至少出現指定次數

      a{3,}

        匹配至少3個a:

        aaa, aaaaaaaaa, aaaaaaaaaaaaaa, ...

6> 

{數字, 數字} 緊跟在前面的字元出現的次數範圍

      a{1, 3}

      匹配1到3個a

       a, aa, aaa

六、首尾正則表達式

  ^表示必須以 xxx 開頭

  ^a    必須 a 開頭的字元串

  a 表示一個字元串中只要含有 a 就可以匹配

 

  ^a^a    非法的寫法, ^ 如果是表示開頭必須寫在開頭, 而且只能寫一個

 

  $表示 必須以 xxx 結尾

  a$必須以 a 結尾

 

  分析^a+$

  匹配一個只有a 的字元串

七、案例

   1> 寫一個正則表達式匹配 身份證號碼

    身份證是 18 位數字

     出生年月 隨機編碼X

      1) 首先是要做匹配, 就一定要使用 ^ $

      2) 18 位數字( 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ). 可以使用

    [0123456789]

         0|1|2|3|4|5|6|7|8|9

    [0-9]

    \d

      3) 要求是 18 . 限定 18 , {18}

 

        組合: ^[0123456789]{18}$

 

    如果最後一位是X

      前面 17 位數字: ^[0123456789]{17}$

      後面要麼是數字: [0123456789] 要麼是 x: x

        寫法:  [0123456789x]

            [0123456789]|x

            0|1|2|3|4|5|6|7|8|9|x

最終得:

    ^[0123456789]{17}[0123456789x]$

    ^[0-9]{17}([0-9]|X)$

   2> 匹配郵箱

    [email protected]

    [email protected]

    [email protected]

    [email protected]

 

結尾還能是

    .cc

    .org

    .edu

    .中文

      ...

 

     名字 @ 主機名

 

      1) 是要驗證郵箱, 那麼就需要使用 ^ $

      2) 名字:

        數字與字母

        [0123456789]

        [abcdefghi...]

        [ABCDEFG...]

 

        [ ] 裡面的字元如果是編碼序號連續的可以使用連字元連接

        數字: [0-9]  

        [9-0] 錯誤的, 編碼逆序

        字母: [a-z]

            [A-Z]

        整合: [0-9a-zA-Z]

 

        名字的變式方法: [0-9a-zA-Z]+

 

    3) 主機名

      主機名也是一串字元串或數字

      但是它多了一個 .com .cn

 

      3.1) 只有名字 [0-9a-zA-Z]+

 

      3.2) 只含有一個 .什麼

        開始 \.

        中間 [0-9a-zA-Z]+

        只含有一個名字: \.[0-9a-zA-Z]+

 

      3.3) 含有多個名字

        .com.con.cc.c1.c2.c3

           .什麼 出現一次到多次

 

        (\.[0-9a-zA-Z]+)+

 

   最後主機名可以寫成

    [0-9a-zA-Z]+(\.[0-9a-zA-Z]+)+

 

   最後整合一下

    /^[0-9a-zA-Z]+@[0-9a-zA-Z]+(\.[0-9a-zA-Z]+)+$/

八、 匹配一個數字

  1> 匹配一個數字

    [0-9]+

    1) 由於是匹配, 包含 ^ $

    2) 首先第一個字元不允許是 0, 所以第一個可以寫成 [1-9]

    3) 後面的數字就是 [0-9]

    4) 要求後面的數字出現 0 次到多次, 以匹配任意的 非 0 數字: [1-9][0-9]*

    5) 由於還需要考慮 0, 因此寫成 [1-9][0-9]*|0

    6) 考慮 | 優先順序最低: ^([1-9][0-9]*|0)$

 

/^(-?[1-9][0-9]*|0)$/

  2> 匹配一個指定範圍的數字

    匹配 0 ~ 255 為例

  如果寫成這樣子:

      [0-255]0, 1, 2, 5錯誤的

 

  如果要匹配指定範圍的數字, 那麼需要將字元串結構進行分類

    1) 0 要匹配的, 所以在正則表達式中有 0 這一項

    2) 任意的 2 位數, [1-9][0-9]

    3) 任意的 1 位數, [0-9], 可以將 第 1) 結論合併

    4) 考慮 3 位數的時候, 只允許出現 1xx 的任意數, 2xx 的有限制

      因此在分組, 考慮 1xx 的任意數, 可以寫成: 1[0-9][0-9]

    5) 考慮 2xx 的數字, 200 250 之間允許任意取. 所以

      寫成: 2[0-4][0-9]

    6) 考慮 250 255, 寫成 25[0-5]

 

   綜合一起:

     /^([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])$/

/^([0-9]|([1-9][0-9])|(1[0-9][0-9])|(2[0-4][0-9])|(25[0-5]))$/

  3> 匹配小數

    要求, 小數不允許以 0 結尾

    3.1415

 

/^(-?([1-9][0-9]*|0))(\.[0-9]*[1-9])?$/;

    (aaa)?這個內容出現或不出現

    (aaa|)也是表達aaa可出現可不出現

    ^((-?[1-9][0-9]*|0)(\.[0-9]*[1-9]|))$

 

九、簡寫元字元

  \s   [\f\r\n\t\v] 不可見字元 (空白字元, 包括空格, tab, 回車換行)等

  \S   [^/f/r/n/t/v] 可見字元 (非空白字元)

 

js 中常常使用 [\s\S] 表示任意字元

 

  \w    [a-zA-Z0-9]_ 單詞字元(表示

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

-Advertisement-
Play Games
更多相關文章
  • 今天分享一下簡單導航欄的製作方法: 第一步:引入css樣式表,新建一個id為nav的層,使用<ul>、<li>、<a>標簽來製作完成效果。 第二步設置CSS樣式: 1.設置nav的屬性 展示效果如下所示: 2.清除<ul>標簽前面自帶的點 3.設置<ul>下包含的<a>標簽的屬性 4.設置滑鼠滑過效 ...
  • 前沿 寫在文章的最前面 前沿 寫在文章的最前面 這篇文章講的是,我怎麼去寫一個 requirejs 。 去 github 上fork一下,順便star~ requirejs,眾所周知,是一個非常出名的js模塊化工具,可以讓你使用模塊化的方式組織代碼,並非同步載入你所需要的部分。balabala 等等好 ...
  • Jquery Easyui驗證擴展,Easyui驗證,Easyui校驗,js正則表達式 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 蕃薯耀 2017年1月9日 08:52:19 星期一 http://www.cnblogs.com/fanshuyao/ 一、擴展easyui的 ...
  • 實例 設置 <div> 元素內彈性盒元素的方向為相反的順序: div { display:flex; flex-direction:row-reverse; } 複製 效果預覽 瀏覽器支持 表格中的數字表示支持該屬性的第一個瀏覽器的版本號。 緊跟在 -webkit-, -ms- 或 -moz- 後的 ...
  • 使用jQuery插件HoverTreeShow彈出遮罩層顯示大圖效果體驗:http://hovertree.com/texiao/hovertreeshow/在開發HoverTreeTop項目的產品展示功能過程中,因為要把產品圖片的大圖顯示給用戶看,就使用jQuery製作了一個插件:HoverTre ...
  • 一、服務 AngularJS功能最基本的組件之一是服務(Service)。服務為你的應用提供基於任務的功能。服務可以被視為重覆使用的執行一個或多個相關任務的代碼塊。 AngularJS服務是單例對象,這意味著只有一個實例被創建過,服務使用AngularJS的依賴註入機制來定義和註冊。 可以把服務註入 ...
  • 目錄 背景與邊框第一部分 背景與邊框第二部分 形狀 視覺效果 字體排印 用戶體驗 結構與佈局 過渡與動畫 源碼下載 一、緩動效果 學習和利用貝塞爾曲線,預設支持ease,ease-in,ease-out,ease-in-out和linear等 還提供一個cubic-beizer自定義貝塞爾曲線的起點 ...
  • 歷經一年的等待後,小程式在2017年1月9日凌晨終於揭開神秘面紗,正式上線。 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...