入門必看----------------------正則表達式

来源:http://www.cnblogs.com/yejiaojiao/archive/2016/05/26/5531811.html
-Advertisement-
Play Games

一、什麼是正則表達式。 解析:在編寫處理字元串的程式或網頁時,經常會有查找符合某些複雜規則的字元串的需要。 正則表達式就是用於描述這些規則的工具。 用俗話說,正則表達式就是記錄文本規則的代碼。 二、入門。 我用一個故事與大家說明。 1)老師組織一個活動在電腦文本html.txt中查找帶"hi"開頭的 ...


一、什麼是正則表達式。

  解析:在編寫處理字元串的程式或網頁時,經常會有查找符合某些複雜規則的字元串的需要。

     正則表達式就是用於描述這些規則的工具。

     用俗話說,正則表達式就是記錄文本規則的代碼。

二、入門。

  我用一個故事與大家說明。

  1)老師組織一個活動在電腦文本html.txt中查找帶"hi"開頭的字母的單詞。

      解析: 這幾乎是最簡單的正則表達式了,它可以精確匹配這樣的字元串:由兩個字元組成,前一個字元是h,後一個是i。通常,處理正則表達式的工具會提供一個忽略大小寫的選項,如果選中了這個                    選項,它可以匹配hi,HI,Hi,hI這四種情況中的任意一種。

       不幸的是,很多單詞里包含hi這兩個連續的字元,比如him,history,high等等。用hi來查找的話,這裡邊的hi也會被找出來。如果要精確地查找hi這個單詞的話,我們應該使用\bhi\b。

       \b是正則表達式規定的一個特殊代碼(好吧,某些人叫它元字元,metacharacter),代表著單詞的開頭或結尾,也就是單詞的分界處。雖然通常英文的單詞是由空格,標點符號或者換行來                       分隔的,但是\b並不匹配這些單詞分隔字元中的任何一個,它只匹配一個位置

      2)如果同時使用其它元字元,我們就能構造出功能更強大的正則表達式。比如下麵這個例子:

      解析:0\d\d-\d\d\d\d\d\d\d\d匹配這樣的字元串:以0開頭,然後是兩個數字,然後是一個連字型大小“-”,最後是8個數字(也就是中國的電話號碼。當然,這個例子只能匹配區號為3位的情形)。

        這裡的\d是個新的元字元,匹配一位數字(0,或1,或2,或……)。-不是元字元,只匹配它本身——連字元(或者減號,或者中橫線,或者隨你怎麼稱呼它)。

        為了避免那麼多煩人的重覆,我們也可以這樣寫這個表達式:0\d{2}-\d{8}。 這裡\d後面的{2}({8})的意思是前面\d必須連續重覆匹配2次(8次)。

三、常用的元字元

 

 

表1.常用的元字元
代碼說明
/.../ 代表了一個模式的開始和結束 
. 匹配除換行符以外的任意字元
\w 匹配字母或數字或下劃線或漢字
\s 匹配任意的空白符
\d 匹配數字
\b 匹配單詞的開始或結束
^ 匹配字元串的開始
$ 匹配字元串的結束

 eg

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title></title>
    <script src="js/jquery-1.8.3.js"></script>
    <script type="text/javascript">
        function checkCode() {
            var code = $("#code").val();
            var $codeId = $("#code_prompt");
            var regCode = /^\d{6}$/;
            if (regCode.test(code) == false) {
                $codeId.html("郵政編碼不正確,請正確輸入");
                return false;
            }
            $codeId.html("");
            return true;
        }
        function checkMobile() {
            var mobile = $("#moblie").val();
            var $mobileId = $("#mobile_prompt");
            //var regMobile = /^1\d{10}$/;
            var regMobile = /^\d(\d[a-zA-Z]{2,3}){3,10}$/;
            if (regMobile.test(mobile) == false) {
                $mobileId.html("手機號碼不正確,請重新輸入");
                return false;
            }
            $mobileId.html("");
            return true;
        }
    </script>
</head>
<body>
    郵政編碼:<input type="text" id="code" />
    <div id="code_prompt">         <!-- 輸出錯誤信息-->
        手機號碼:<input type="text" onblur="checkMobile()" id="moblie" />
    </div>
    <div id="mobile_prompt"></div>
</body>
</html>

  在這個例子中我就在手機號和郵編號碼的時候用正則限制了它的輸出規範。比如手機號的正則“ /^\d(\d[a-zA-Z]{2,3}){3,10}$/;”解釋:(\d[a-zA-Z]{2,3})是以一個數字開頭後面至少跟兩個字母不得超過三個字母;{3,10}加上\d這個匹配次數不能超過3---10次。

 大家可以關註:https://msdn.microsoft.com/zh-cn/library/dt8b909y(v=vs.90).aspx進行深入瞭解


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

-Advertisement-
Play Games
更多相關文章
  • http://handyxuefeng.blog.163.com/blog/static/454521722013111714040259/ http://book.51cto.com/art/201106/270499.htm http://www.cnblogs.com/blackbird/ar ...
  • 學習正則表達式的最好方法是從例子開始,理解例子之後再自己對例子進行修改,實驗。下麵給出了不少簡單的例子,並對它們作了詳細的說明。 假設你在一篇英文小說里查找hi,你可以使用正則表達式hi。 這幾乎是最簡單的正則表達式了,它可以精確匹配這樣的字元串:由兩個字元組成,前一個字元是h,後一個是i。通常,處 ...
  • 在jquery1.5之後的版本中,加入了一個deferred對象,也就是延遲對象,用來處理未來某一時間點發生的回調函數。同時,還改寫了ajax方法,現在的ajax方法返回的是一個deferred對象。 那就來看看deferred對象的用法。 1.ajax的鏈式回調 還可以同時寫多個回調,會按照順序依 ...
  • 先看顯示效果: 對應HTML代碼: 對應元素習慣樣式: ...
  • 1.正則表達式到底是什麼東西? 在編寫處理字元串的程式或網頁時,經常會有查找符合某些複雜規則的字元串的需要。正則表達式就是用於描述這些規則的工具。換句話說,正則表達式就是記錄文本規則的代碼。 很可能你使用過Windows/Dos下用於文件查找的通配符(wildcard),也就是*和?。如果你想查找某 ...
  • <head lang="en"> <meta charset="UTF-8"> <title></title> <style type="text/css"> .box{ display:block; height:350px; width:250px; background:#ddd; curso ...
  • 簡潔而神秘的語法: 正則表達式的語法非常簡潔,而且對於不熟悉正則表達式的人,看起來簡直很神秘。有時,正則表達式中看起來好像到處都充斥著反斜杠、圓括弧和方括弧。而只要理解正則表達式中每個字元串和元字元的作用,就能自己編寫正則表達式或者分析其他開發人員編寫的正則表達式。 元字元是指在正則表達式模式中具有... ...
  • 其實實際上實現中並不能讓password中顯示文字提示,但是我們在工作中有這樣的需求,當沒輸入東西的時候,框內有提示輸入密碼,但是當輸入東西的時候又顯示的是*號,那麼是如何實現的呢?其實原理很簡單,就是放兩個文本框,樣式以及定位都是一樣的。先將type為password的隱藏,只顯示type為tex ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...