文章出處

在上一篇中介紹了一個test方法,在本文中將使用另外一個,exec方法可以找到匹配的結果并且返回結果以及位置。exec("正則");

  簡單測試:

var str = "{追夢子}";
var reg = /追夢子/;
console.log(reg.exec(str)); //["追夢子", index: 1, input: "{追夢子}"]

  exec返回的是一個數組,第一位是匹配到的內容,第二位是匹配到的內容第一位置的索引,索引從0開始的。

  另外如果需要匹配一段文本,并且把某一個字提取出來可以給需要提取出來的子加括號。

var str = "{追夢子}";
var reg = /追(夢)子/;
console.log(reg.exec(str)); //["追夢子", "夢", index: 1, input: "{追夢子}"]

  也有人叫它分組,更多exec的用途會在后面的幾節中詳細講到,因為我們需要更多的知識來擴充我們的大腦。

  .字符可以用來匹配任意的一個字符串。

var str = "#f3f3f3";
var reg = /./;
console.log(reg.exec(str)); //["#", index: 0, input: "#f3f3f3"]

  小任務:我們需要匹配var str = "json.js";這段文本,并且.js前面可以是任意的內容,溫馨提示+可以匹配任何包含至少一個n的字符串。

var str = "json.js";
var reg = /.+\.js/;
console.log(reg.exec(str)); //["json.js", index: 0, input: "json.js"]

  如果使用了正則表達式中的特殊字符最好前面加\進行轉譯。所謂特殊字符就是某個字符在正則中有特殊的含義,比如+、. 、*、?等。

  假如我們想提取.js前面的字符可以這樣做。

var str = "json.js";
var reg = /(.+)\.js/;
console.log(reg.exec(str)); //index.js:3 ["json.js", "json", index: 0, input: "json.js"]

  回想一下我們前面說的分組,當然我們也可以使用多個分組。

var str = "json.js";
var reg = /(.+)\.(js)/;
console.log(reg.exec(str)); //["json.js", "json", "js", index: 0, input: "json.js"]

  至于這有什么用后面會講的,不用著急。

   ^表示這個字符后面的那個字符必須出現在開始的位置。

var str = "wjson.js";
var reg = /^j.+\.(js)/;
console.log(reg.exec(str)); //null

  因為j并不在開始的位置

var str = "json.js";
var reg = /^j.+\.(js)/;
console.log(reg.exec(str)); //["json.js", "js", index: 0, input: "json.js"]

  ^還有另外一個用途,如果在[]中使用^那么^表示的就是取非。

var str = "jQuery.js";
var reg = /j[^a-z][a-z]*.js/;
console.log(reg.exec(str)); //["jQuery.js", index: 0, input: "jQuery.js"]

  [^a-z]表示除了小寫a-z以外的任意字符,另外這段代碼還使用了*號,*號表示匹配前面一個字符零次或者多次。在這里就是匹配[a-z]中的任意一個字符0次或多次。

本節完。

 

  

 

  

 


文章列表


不含病毒。www.avast.com
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()