正則表達式(一)

来源: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
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...