文章出處
文章列表
在上一篇中介紹了一個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次或多次。
本節完。
文章列表
全站熱搜