正則表達式(一)

来源:http://www.cnblogs.com/menu520/archive/2016/07/07/5649978.html
-Advertisement-
Play Games

正則表達式: 我們已經接觸過與正則表達式有關的一些概念。例如在Windows操作系統中,用“?”和“*”通配符來查找硬碟上的文件時,“?”通配符匹配文件名中的單個字元,而“*”通配符匹配零個或多個字元。如“data?.dat”就是一種文本模式,它能匹配“data1.dat”、“datan.dat”和 ...


  • 正則表達式:

我們已經接觸過與正則表達式有關的一些概念。例如在Windows操作系統中,用“?”和“*”通配符來查找硬碟上的文件時,“?”通配符匹配文件名中的單個字元,而“*”通配符匹配零個或多個字元。如“data?.dat”就是一種文本模式,它能匹配“data1.dat”、“datan.dat”和“dataw.dat”。“data*.da”是另外一種文本模式,它匹配“data.dat”、“data1.dat”、“datawnc.dat”和“datadiff.dat”等文件名。
正則表達式的功能和概念類似於“*”和“?”通配符所實現的功能和概念,但它的功能更強大,而且更加靈活。下麵是我在培訓時根據筆記所整理出來的一些簡單的正則表達式的使用方法!

  • 創建RegExp對象實例的兩種方式:

(1)構造函數方式
var reg=new RegExp(“表達式”,“附加參數”);

(2)普通方式
var reg=/表達式/附加參數

附加參數是可選的,用來擴展正則表達式的含義,主要有三個參數:

(1)g:全局匹配。 (2)i:用作忽略大小寫的參數。 (3)m:多行匹配。

  • test方法

該方法檢查一個字元串中是否存在創建RegExp對象實例時所指定的正則表達式模式,如果存在則返回true,否則返回false。

檢查字元串中是否存在“world”。
<script type="text/javascript">
  var str="hello world";

  var regExp=new RegExp("world");

  var result=regExp.test(str);

  document.write(result); //true

</script>
調用RegExp()的構造函數創建正則表達式對象regExp。調用正則表達式對象的test()方法檢查目標字元串str中是否包含模式world。如果在str中查找到模式world,在頁面上輸出test()的返回值true,否則輸出返回值false。

檢查字元串中是否存在“world”,並忽略大小寫。
<script type="text/javascript">
  var str="HELLO WORLD";

  var regExp=/world/i;

  var result=regExp.test(str);

  document.write(result); //true

</script>

將正則表達式/world/i賦給變數regExp,這是用普通方式創建正則表達式對象,附加參數i表示忽略world的大小寫,所以在用正則表達式對象的test方法檢查“HELLO WORLD”中是否存在“world”模式時,返回值是true。

  • exec方法

exec方法使用RegExp對象實例創建時指定的正則表達式模式搜索字元串,並返回一個包含搜索結果的數組。

在“我愛祖國我愛家鄉”中搜索“我”,並輸出“我”在被搜索的字元串中的位置。

<script type="text/javascript">
  var str="我愛祖國我愛家鄉";

  var regExp=/我/;

  var result=regExp.exec(str);

  document.write("在索引"+result.index+"位置出現了"+result);

</script>

exec方法返回的數組有index屬性,它表示匹配的字元串在整個被搜索字元串中的位置;exec方法每次從字元串的起始位置搜索第一個與模式匹配的字元串。

  • 限定符

(1){n}:規定前面的元素或組合項要連續出現n次。
  <script type="text/javascript">
    var regExp=/he{2}/;

    var str="heeel";

    var flag= regExp.test(str) document.write(flag);

  </script>

  執行代碼後,在頁面上輸出true,因為在字元串“heeel”中,存在he{2}文本模式。如果要讓正則表達式“he{2}”中的“he”同時受到{2}的作用,必須使用圓括弧將它們括起來,使它們成為一個緊密結合的組合項,這樣{2}就表示圓括弧中的內容連續出現2次。
  (2){n,}:規定前面的元素或組合項至少出現n次。例如“o{2,}”,字元串“bod”不能與之匹配,但“foood”可以與之匹配。

  (3){n,m}:規定前面的元素或組合項至少連續出現n次,至多連續出現m次,其中n≤m,逗號和數字之間不能有空格。例如“o{1,3}”,字元串“food”和字元串“foood”都能與之匹配。

  (4)+:規定前面的元素或組合項必須出現一次或連續出現多次,等效於{1,}。

  (5)*:規定前面的元素或組合項可以出現零次或連續多次,等效於{0,}。例如“zo*”,字元串“z”和“zoo”都能與之匹配。

  (6)?:規定前面的元素或組合項出現零次或一次,等效於{0,1}。例如“zo?”,字元串“z”和“zo”都能與之匹配。

  • 選擇匹配符

  選擇匹配符有且僅有一個,即“|”字元,用於選擇匹配兩個選項之中的任意一個。例如“chapter|section1”匹配的是“chapter”或“section1”,如果要匹配“chapter1”或“section1”,使用括弧,即“(chapter|section)1”。

  • 字元匹配符

  (1)[…]:匹配方括弧中包含的字元集中的任意一個字元。例如,正則表達式“[abc]”,字元“a”、“b”、“c”都可以與之匹配。

  (2)[^…]:匹配方括弧中未包含的任何字元。例如,正則表達式“[^ab]”,除了字元“a”、“b”之外,其他的任何字元都可以與之匹配。

  (3)[a-z],[1-9]:匹配指定範圍內的任何字元。 (4)[^a-z],[^1-9]:匹配不在指定的範圍內的任何字元。

  (5)\d:匹配任意一個數字字元,等效於[0-9]。 (6)\D:匹配任意一個非數字字元,等效於[^0-9]。

  (7)\s:匹配任何空白字元,包括空格、製表符等。

  (8)\S:匹配任何非空白字元。

  (9)\w:匹配任何英文字母、數字和下劃線,等效於[A-Za-z0-9_]。 (10)\W:匹配任何非英文字母和數字類字元,但不包括下劃線,等效於[^A-Za-z0-9_]。 (11).:匹配除換行符\n之外的任何單字元。

  • 常用的正則表達式

  1.匹配身份證號碼:^\d{15}$|^\d{18}$

  2.郵箱:^\w+@\w+.[a-zA-Z]{2,3}(.[a-zA-Z]{2,3})?$;

  3.中國的郵政編碼:^\d{6}$

  4.匹配字元串中的中文字元:[\u4e00-\u9fa5]

  5.驗證5到12位的qq號:^\d{5,12}$


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

-Advertisement-
Play Games
更多相關文章
  • 開發工具採用WebStorm,沒破解,使用了過期策略:安裝之後不著急打開程式,先設置系統日期為未來的某個日期,比如2020年。然後再打開程式,試用。然後再改回來系統日期。雖然每次打開WebStorm都會提示: 不過不影響使用,點擊“OK”繼續吧。 項目採用anguarjs seed項目作為基礎框架, ...
  • 原文地址:http://www.3lian.com/edu/2015/01-31/191131.html 原文地址:http://www.3lian.com/edu/2015/01-31/191131.html 詳解CSS的相對定位和絕對定位 感謝 3lian8 的投遞 時間:2015-01-31 ...
  • 當用百分比作為寬高時 因為百分比是相對於其最近的父元素的寬高,所以首先其父元素要有寬高,寬度一般不設置會有預設值(比如整個屏幕的寬度),但是高度不設置就沒有預設值,因此如果父元素沒設高度值,而其內部元素用了百分比作為高度時,是沒有效果的 ...
  • 今年項目的需要,開始琢磨研究前端開發,由於之前項目已經用Angularjs了,就順其而然的繼續沿用。 在使用Angularjs之前,先要準備好工具:Nodejs、npm、git、bower、fis 下麵是各個工具的安裝方法(開發機為64位的Win10): 1.Nodejs1>下載安裝:https:/ ...
  • 響應式佈局可以為不同終端的用戶提供更加舒適的界面和更好的用戶體驗,而且隨著目前大屏幕移動設備的普及,用"大勢所趨"來形容也不為過。隨著越來越多的設計師採用這個技術,我們不僅看到很多的創新,還看到了一些成形的模式。隨著技術的發展css3的特性也被廣泛應用開來,它的很多新標簽也非常好用而且非常容易學習, ...
  • 項目中用到的跨域 ,在除IE9以下的瀏覽器上運行都是沒有問題的,IE8 IE9中報錯,error :no transport; 網上解決辦法均是 在發起請求之前添加 jQuery.support.cors=true;但是,線下測試,是ok的,一放到伺服器上,又出現了新的eroor:readyStat ...
  • 在React中,當涉及組件嵌套,在父組件中使用 把所有子組件顯示出來。如下: function ParentComponent(props){ return ( {props.children} ) } 如果想把父組件中的屬性傳給所有的子組件,該怎麼做呢? 使用 幫助方法就可以做到。 比如,把幾個R ...
  • 相信大家在項目的開發中都遇到過這樣的需求,一行放X(X>1)個塊且相鄰塊之間的間距相同。 大概就是上面這個樣子,下麵介紹幾種實現的方式。 1.負margin大法 設置好元素的寬度和留白占滿父級的寬度,然後設置父級的margin-left為留白的負留白的寬度 *{ margin: 0; padding ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...