初識正則表達式

来源:http://www.cnblogs.com/webcome/archive/2016/05/06/5467415.html
-Advertisement-
Play Games

一、字元串操作包括哪些? search 查找 <script> var str='abcdefd'; alert(str.search('a')); //返回0,從0開始 alert(str.search('bc')); //返回1,這個1是bc出現的位置,search只找第一次出現的位置 aler ...


一、字元串操作包括哪些?

search  查找

<script>
var str='abcdefd';
alert(str.search('a'));  //返回0,從0開始
alert(str.search('bc')); //返回1,這個1是bc出現的位置,search只找第一次出現的位置
alert(str.search('g')); //返回要查找的字元串第一次出現的位置,沒有返回-1
</script>

substring  獲取子字元串

<script>
var str='abcdef';
alert(str.substring(1, 4)); //substring有兩個參數,起始位置和結束位置,這裡返回bcd(不是bcde),不包括結束位置的字母
// alert(str.substring(1));  只給第一個參數時,一直取到字元串結束,返回bcdef
</script>

charAt  獲取某個字元

<script>
var str='abcdef';
alert(str.charAt(2)); //取第2個位置上的字元,返回c
</script>

split  分割字元串,獲得數組; 

<script>
var str='abc-12-u-qw';
var arr=str.split('-'); //- 用引號包裹
alert(arr);   //返回一個數組,abc,12,u,qw
alert(arr[0]);  //返回數組的第0個abc
</script>
二、什麼是正則表達式?如何創建正則對象? 規則、模式,強大的字元串匹配工具; 創建正則對象:
JS風格   —>      new RegExp(“a”, “i”)
perl風格 —>    /a/i
<script>
var str='abcdef';
var re=new RegExp('a');  //字元串時候包含a
//var re=new RegExp('a', 'i');  //第一個參數是正則表達式本身,第二個參數也是一個字元串,i表示忽略大小寫
var re=/a/i;  //簡寫  雙斜杠裡面的就是規則
alert(re.test(str));  //test方法,檢驗這個字元串是否符合正則表達式的規則;這裡返回true
</script>
三、正則有幾種選項?分別是什麼意思? g和i    g全局;i忽略大小寫; 四、search、match、replace是做什麼的?怎麼用?
<script>
var str='asdf 443 vczxv 55';
var re=/\d/;   // \d在正則里表示數字
alert(str.search(re));  //返回5; 數字4在第5個位置;使用正則就很快找出來第一個數字出現的位置
</script>

match 獲取匹配的項目

<script>
var str='sdf e443 fedef  55 66gg 333322312 dff 99';
var re=/\d+/g;  //g全局匹配  \d 表示“一個”數字 \d\d 表示“兩個”數字。+ 量詞 多個,任意長度;\d+ 表示多個數字;返回的是443,55,66...
// var re=/\d/g;   返回的是  4,4,3,5,5,6,6.... 拆開了
alert(str.match(re));  //match匹配
</script>

repalce  只替換第一個  replace(a,b)表示把a替換成b

<script>
var str='abacdAef';
alert(str.replace('a', 'T'));  //返回TbacdAef  只替換第一個
</script>
<script>
var str='abacdAef';
alert(str.replace(/a/gi, 'T'));  //替換全部 而且 忽略大小寫
</script>
var re=/我們|你們|他們/g;  //中間的豎線表示 或 的意思
oTxt2.value=oTxt1.value.replace(re, '**');

五、字元類([])包括幾種情況?

<script>
var str='1b2 abc 1c2 ee';
var re=/1[abc]2/g;  //1.方括弧-->或者,表示a或者b或者c 單個字元 [a,b]表示a或者逗號或者b 2.方括弧表示範圍:[0-9]表示所有的數字;[a-z]表示所有的字母;[0-9a-z]結合起來用表示數字或者字母;
// \d 就是[0-9]的簡寫
alert(str.match(re));  //1b2,1c2
</script>
任意字元  [abc]   表示a或者b或者c 單個字元 [a,b]表示a或者逗號或者b

範圍   [a-z]、[0-9]     [0-9]表示所有的數字;[a-z]表示所有的字母;[0-9a-z]結合起來用表示數字或者字母; \d 就是[0-9]的簡寫

排除   [^a]   除了a以外所有的內容   六、正則有哪些轉義字元?分別是什麼意思?

.(點)——任意字元

\d、\w、\s      \w   word   [a-z0-9_] 英文、數字、下劃線     \s       space  空白

\D、\W、\S      \D\d正好相反;表示[^0-9] 非數字;  \W  表示除了英文、數字、下劃線;

<script>
var str='  fd rr  erre fff  ';
alert(str.replace(/\s+/g, ''));  //去掉空格
</script>

七、什麼是量詞?各個量詞分別有什麼作用?

基本形式是:

{n,m}   最少n次,最多m

{n,}   最少n次,最多不限;即:至少n

{n}   正好n

{,n}  最小不限,最多n

{n,}        至少n次

*        任意次        相當於{0,}  不建議使用;

        零次或一次        {0,1}

+        一次或任意次{1,}

<script>
var str='我的QQ是:258344567,你的是4487773嗎?';
var re=/[1-9]\d{4,10}/g;  //挑出兩個qq號
alert(str.match(re));
</script>

例子:校驗郵箱:  若用中文寫:    一串字母,數字,下劃線   @  一串字母,數字   .   24個字母

var re=/^\w+@[a-z0-9]+\.[a-z]{2,4}$/;  //^表示行首,$表示行尾  中間的必須符合要求 \.表示點本身  
        if(re.test(oTxt.value))
        {
            alert('對了');
        }
        else
        {
            alert('你寫錯了');
        }

加行首和行尾是必要的;不加的話,表示包含規則的就匹配成功 --> 比如      中文[email protected]    這種也會匹配成功;因為中文[email protected]   中的部分符合規則;

通過行首和行尾,去掉首尾的空格:
<script>
var str='  ffe ww ee fewf   ';
var re=/^\s+|\s+$/g;  //去掉首尾的空格,中間的空格保留
alert('('+str.replace(re, '')+')');
</script>

檢測中文:

<script>
var str='asdfb 34啊 +_=45 ';
var re=/[\u4e00-\u9fa5]/;  //檢測是否有中文存在;u表示utf8編碼;4e00表示第一個漢字,9fa5是最後一個
alert(re.test(str));   //true,str中有中文
</script>

單詞邊界   \b

完美版getByClass

<script>
function getByClass(oParent, sClass)
{
    var aEle=oParent.getElementsByTagName('*');
    var aResult=[];
    var re=new RegExp('\\b'+sClass+'\\b', 'i');   // \b是單詞邊界
    var i=0;
     
    for(i=0;i<aEle.length;i++)
    {
        if(re.test(aEle[i].className))
        {
            aResult.push(aEle[i]);
        }
    }
    return aResult;
}
</script>

 


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

-Advertisement-
Play Games
更多相關文章
  • 長久以來,伺服器端的高層架構大體被區分為對立的兩類:SOA(Service-oriented architecture)以及 AIO(All in one)。SOA 將一個完整的應用分割為相互獨立的服務,每個服務提供一個單一標準功能
  • 《Clean Code》是一本令人印象深刻的書,它將編碼當成寫作,強調代碼應當像文章一樣清晰準確而不是晦澀難懂。 同時作者給出了操作性很強的編碼建議: ...
  • 前言 這篇博客的目的是對項目中偶爾碰到的應用設計模式的代碼積累一下。 我認為針對於設計模式的學習,通過看書、看例子只能瞭解概念,而重要的是如何把概念應用到實際的項目開發中。 而且我想提醒大家的是,學習設計模式時,千萬不要拘泥於書上的內容,形成定式思維,這樣對於其他源碼理解會出現一層自然屏障,理解起來 ...
  • 今天是五.四青年節,祝大家節日快樂。看著今天這標題就有食欲,夏天到了,醋溜土豆絲和清炒苦瓜適合夏天吃,好吃不上火。這兩道菜大部分人都應該吃過,特別是醋溜土豆絲,作為“魯菜”的代表作之一更是為大眾所熟知,醋溜土豆絲,好吃不上火。清炒苦瓜這道菜好啊,更是夏天必備之良菜,其功效在此就不做過多贅述了。言歸正 ...
  • 備忘錄:在不破壞封裝的前提下,捕獲一個對象的內部狀態,併在該對象之外保存這個狀態,這樣以後就可將該對象恢復到原先保存的狀態。 舉例如下: Originator:發起人,負責創建一個備忘錄Memento,用以記錄當前時刻它的內部狀態,並可使用備忘錄恢復內部狀態。它根據需要決定Memento存儲Orig ...
  • 一、Javascript中的數據類型可以分為基本數據類型和複合數據類型兩種: (1)基礎數據類型有5種數據類型:Number、Boolean、Undefined、Null和String。 Number類型:整數和浮點數。NaN:Not a Number。這個數值用於本來要返回一個數值,但是卻未能放回 ...
  • × 目錄 [1]display [2]visibility [3]hidden[4]opacity[5]overflow[6]clip[7]transform[8]覆蓋[9]偏移 前面的話 在網頁製作中,元素的顯示隱藏是非常常見的需求。本文將介紹元素顯示隱藏的9種思路 思路一: display 對於 ...
  • 效果圖: 第一張使用label標簽,第二張沒有使用.. 使用label標簽,middle對齊方式的單選框下降了1px 而沒有使用label標簽,sub對齊方式的 卻 居 中 了 =_= 不太理解,困.. 留一記錄, 忘能解惑 代碼: 1.說明名字用<label>標簽 2.說明文字沒有使用<label ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...