JavaScript:學習筆記(3)——Regex的應用

來源:互聯網
上載者:User

標籤:使用者   建立   device   快捷   round   ace   order   技術分享   大小寫   

JavaScript:Regex的應用應用Regex對象RegExp建立Regex

JavaScript中使用RegExp對象來表述一個Regex。使用Regex之前首先要建立一個RegExp對象

var oRexp = new RegExp(pattern,[flag]);

 

說明:

  pattern:為必選項,表示以字串格式表示的Regex。

  flag:為可選項,是匹配選項,可用值如下:

  

 修飾符 描述
i 執行對大小寫不敏感的匹配。
g 執行全域匹配(尋找所有匹配而非在找到第一個匹配後停止)。
m 執行多行匹配。

使用者不一定要顯示的建立RegExp,還可以隱式地建立RegExp對象

var oRegp = /pattern/[flag]

 

注意:

  使用顯式格式建立RegExp對象時,Regex中的“\”,要用“\\”來代替,且運算式開頭和結尾不需要書寫“/”。

判斷字串是否存在匹配內容

說明:

  test() 方法用於檢測一個字串是否匹配某個模式,如果字串中含有匹配的文本,則返回 true,否則返回 false。

執行個體:

  檢測使用者輸入的郵箱是否匹配模式

<!DOCTYPE html><html lang="en">    <head>        <title></title>        <meta charset="UTF-8">        <meta name="viewport" content="width=device-width, initial-scale=1">        <link href="css/style.css" rel="stylesheet">    </head>    <body>        <form>            <input name="email" type="text" id="email">            <input name="check" type="button" value="檢測" onclick="checkMail()">        </form>        <script>            function checkMail()            {                var objReg =/\w+[@]{1}\w+[.]{1}\w+/  //模式                var email = document.getElementById("email").value;                if(objReg.test(email))    //利用test進行匹配檢測,返回true或這false                {                    alert("Email符合規範")                }else{                    alert("Email不符合規範")                }            }        </script>    </body></html>

 

對字串進行匹配檢測  

說明:

  exec()方法,通過對指定的字串進行一次匹配檢測,擷取字串中第一個與Regex所匹配的內容,並將該匹配內容及其子匹配的結果儲存到返回的數組中。

執行個體:

  檢測手機號,並將第一次匹配成功的內容及其子匹配的結果儲存到返回的數組中。

        <script>                var objReg =/1[35](\d)(\d{8})/g;                var ostring="我的電話13111111111 它的電話15222222222"                var arr=objReg.exec(ostring);                for(var i=0;i<arr.length;i++)                {                    document.write(arr[i]);                }        </script>

 

說明:

  這裡只有第一次匹配到的,即13111111111這個電話,15222222222雖然也符合,但是這個方法只進行一次匹配。

替換字串中的指定內容

說明:

  replace()方法可以用指定的子字串替換掉字串中與指定額Regex相匹配的內容。

執行個體:

  將所有數字變成X


        <script>                var objReg =/\d/g;                var ostring="我的電話13111111111 它的電話15222222222"                document.write(ostring.replace(objReg,‘X‘));        </script>

 

匹配處理結果

在JavaScript中,使用Regex進行檢索後,匹配結果將儲存在集合中。本節將講解該集合中的各種處理,如擷取匹配位置、擷取子匹配結果、擷取匹配索引。

擷取字串中所有的匹配資訊

說明:

  String.match()方法返回一個數組,數組儲存了字串中所有的匹配資訊。

執行個體:

  匹配所有第二個字母為o的單詞

        <script>                var objReg =/\wo(\w+)?/g;  //所有第二個字母為0的單詞                var ostring="Do you lova MS?"                var arr = ostring.match(objReg);                if(arr!=null)                {                    for(var i=0;i< arr.length;i++)                    {                        document.write("<li>"+arr[i])                        }                }        </script>
擷取第一次匹配成功的起始地址

說明:

  String.search()方法是與指定的Regex相比較,以得到與之相匹配的內容第一次出現時的位置。

執行個體:

  檢測第一次出現ABCBA類似形式的字串位置

代碼:
<script> var objReg =/(\d)(\d)\d\2\1/; var ostring="11010111" var pos = ostring.search(objReg); if(pos!=-1) { var content = objReg.exec(ostring); alert("找到了,位置是"+pos+" 內容是"+content[0]); } </script>
效果:
  

補充:

說明:

  這裡用到了 後向引用 

  • 當一個Regex被分組之後,每一個組會自動被賦予一個組號,該組號可以代表該組的運算式。
  • 分組的編製規則:從左至右,以左括弧為標誌,第一個分組為1,第二個分組為2,以此類推。
  • 反向引用提供了尋找重複字元組的方便方法。它可被認為是再次匹配同一個字串的快捷指令。

第二種方式:

  RegExp.index:靜態屬性,返回字串第一次匹配出現的起始位置  

  

 


 

JavaScript:學習筆記(3)——Regex的應用

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.