正則表達式學習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
  • 前言 本文介紹一款使用 C# 與 WPF 開發的音頻播放器,其界面簡潔大方,操作體驗流暢。該播放器支持多種音頻格式(如 MP4、WMA、OGG、FLAC 等),並具備標記、實時歌詞顯示等功能。 另外,還支持換膚及多語言(中英文)切換。核心音頻處理採用 FFmpeg 組件,獲得了廣泛認可,目前 Git ...
  • OAuth2.0授權驗證-gitee授權碼模式 本文主要介紹如何筆者自己是如何使用gitee提供的OAuth2.0協議完成授權驗證並登錄到自己的系統,完整模式如圖 1、創建應用 打開gitee個人中心->第三方應用->創建應用 創建應用後在我的應用界面,查看已創建應用的Client ID和Clien ...
  • 解決了這個問題:《winForm下,fastReport.net 從.net framework 升級到.net5遇到的錯誤“Operation is not supported on this platform.”》 本文內容轉載自:https://www.fcnsoft.com/Home/Sho ...
  • 國內文章 WPF 從裸 Win 32 的 WM_Pointer 消息獲取觸摸點繪製筆跡 https://www.cnblogs.com/lindexi/p/18390983 本文將告訴大家如何在 WPF 裡面,接收裸 Win 32 的 WM_Pointer 消息,從消息裡面獲取觸摸點信息,使用觸摸點 ...
  • 前言 給大家推薦一個專為新零售快消行業打造了一套高效的進銷存管理系統。 系統不僅具備強大的庫存管理功能,還集成了高性能的輕量級 POS 解決方案,確保頁面載入速度極快,提供良好的用戶體驗。 項目介紹 Dorisoy.POS 是一款基於 .NET 7 和 Angular 4 開發的新零售快消進銷存管理 ...
  • ABP CLI常用的代碼分享 一、確保環境配置正確 安裝.NET CLI: ABP CLI是基於.NET Core或.NET 5/6/7等更高版本構建的,因此首先需要在你的開發環境中安裝.NET CLI。這可以通過訪問Microsoft官網下載並安裝相應版本的.NET SDK來實現。 安裝ABP ...
  • 問題 問題是這樣的:第三方的webapi,需要先調用登陸介面獲取Cookie,訪問其它介面時攜帶Cookie信息。 但使用HttpClient類調用登陸介面,返回的Headers中沒有找到Cookie信息。 分析 首先,使用Postman測試該登陸介面,正常返回Cookie信息,說明是HttpCli ...
  • 國內文章 關於.NET在中國為什麼工資低的分析 https://www.cnblogs.com/thinkingmore/p/18406244 .NET在中國開發者的薪資偏低,主要因市場需求、技術棧選擇和企業文化等因素所致。歷史上,.NET曾因微軟的閉源策略發展受限,儘管後來推出了跨平臺的.NET ...
  • 在WPF開發應用中,動畫不僅可以引起用戶的註意與興趣,而且還使軟體更加便於使用。前面幾篇文章講解了畫筆(Brush),形狀(Shape),幾何圖形(Geometry),變換(Transform)等相關內容,今天繼續講解動畫相關內容和知識點,僅供學習分享使用,如有不足之處,還請指正。 ...
  • 什麼是委托? 委托可以說是把一個方法代入另一個方法執行,相當於指向函數的指針;事件就相當於保存委托的數組; 1.實例化委托的方式: 方式1:通過new創建實例: public delegate void ShowDelegate(); 或者 public delegate string ShowDe ...