工欲善其事,必先利其器,jq原始碼中充斥的大量的正規表示式,我準備根據李炎恢老師的正規表示式的講解,
寫一篇有關正規表示式的筆記!不墨跡,直接進入正題!
ecmascript 的 regexp 類 表示正規表示式
正規表示式在jq中被大量運用,主要是為了檢索字串,進行匹配
建立正規表示式
var box=new
regexp('box');
//當然後面還可以傳入乙個引數,是用來確定修飾正則驗證時的規則
//字面量方式的正則,最為常用
var box=/box/
//如果傳參的話
var box=/box/igm
i 忽略大小寫
g 全域性匹配,否則匹配到第乙個停止
m 多行匹配,字串有很多行,不加m只匹配第一行
如何匹配呢,regexp 物件包含兩個方法:test()和 exec()。**test() 方法在字串中查詢是否存在指定的正規表示式並返回布林值,如果存在則返回 true,不存在則返回 false。exec()方法也用於在字串中查詢指定正規表示式,如果 exec()方法執行成功,則返回包含該查詢字串的相關資訊陣列。如果執行失敗,則返回 null。
//test方法
var pattern=/box/i;
var str="this is a box"
alert(pattern.test(str));//false
alert(/box/i.test('this is a box!')); //一條語句判斷
//exec方法,還有其他應用,下面再說
var pattern= /box/i;
var str ='thisis abox!';
alert(pattern.exec(str));//返回乙個box,但這個不是乙個字串,有就返回陣列的值,沒有就null
alert(typeof pattern.exec(str))//object是乙個物件,陣列也是物件,
下面說一下正則中,字串正則的表達方法,因為string正規表示式的方法
分別是match,replace,search,sp四種方法,下面一一舉例
search
var pattern=/box/ig;//否則第乙個box就停止了
var str ='this is a box!,that is a box too';
alert(str.search(pattern));//將所有組成陣列返回//box,box
search
var pattern=/box/i;
var str ='this is a box!,that is a box too';
alert(str.search(pattern));//10,第乙個位置為0,不會匹配到第二個,第乙個就停止
replace
var pattern=/box/ig;//開啟全域性可以替換全部的box
var str ='this is a box!,that is a box too';
alert(str.replace(pattern,'tom'));//返回替換後的字串this is a tom!,that is a tom too
var pattern=/!/ig;//用!分割
var str ='this is a box!,that is a box too';
alert(str.split(pattern));//this is a box,that is a box too, 還有乙個空的
regexp物件的靜態屬性 其中實際很少使用,在書中也沒找到一些有關靜態的用法
var pattern= /(g)oogle/;
var str ='thisis google!';
pattern.test(str);//必須要執行,否則後面的屬性就沒有
//input顯示當前匹配的字串 可以用$_代替
alert(regexp.input); //this is google
regexp['$_']//這是改寫
//最後一次匹配的字串 $`
alert(regexp.leftcontext); //this is
regexp['$`']
//在上一次匹配後的字串 $'
alert(regexp.rightcontext); //!
regexp['$']
//最後乙個匹配的字串 ,$&
alert(regexp.lastmatch);//google
//最後一對圓括號內的匹配字串 $+
alert(regexp.lastparen); //g
//用於指定是否所有的表示式都用於多行的布林值 $*
alert(regexp.multiline); ///false
//要注意的是:opera 不支援 input、lastmatch、lastparen 和 multiline 屬性。ie不支援 multiline 屬性。
當然還有例項屬性,用的也很少,都是一些檢驗某些屬性是否存在的
var pattern= /google/ig;
alert(pattern.global); //true,是否全域性了
alert(pattern.ignorecase); //true,是否忽略大小寫
alert(pattern.multiline); //false,是否支援換行
alert(pattern.source); //google,正規表示式的源字串
var pattern= /google/g; varstr ='googlegoogle google'; pattern.test(str); //google,匹配第一次 alert(pattern.lastindex); //6,第二次匹配的位
ps:以上基本沒什麼用。並且 lastindex 在獲取下次匹配位置上 ie 和其他瀏覽器有偏差, 主要表現在非全域性匹配上。lastindex 還支援手動設定,直接賦值操作。
正規表示式 正規表示式 總結
非負整數 d 正整數 0 9 1 9 0 9 非正整數 d 0 負整數 0 9 1 9 0 9 整數 d 非負浮點數 d d 正浮點數 0 9 0 9 1 9 0 9 0 9 1 9 0 9 0 9 0 9 1 9 0 9 非正浮點數 d d 0 0 負浮點數 正浮點數正則式 英文本串 a za z...
正規表示式 一
若你使用過windows dos下用於檔案查詢的萬用字元,也就是 和?如果你想查詢某個目錄下的所有的word文件的話,你會搜尋 doc。會被解釋成任意的字串。和萬用字元類似,正規表示式也是用來進行文字匹配的工具,只不過比萬用字元更能精確地描述你的需求。比如你可以編寫乙個正規表示式來查詢所有以0開頭,...
正規表示式(一)
定義和使用 var patt1 new regexp hello var patt2 world test方法 test 方法檢索字串中的指定值。返回值是 true 或 false。var pat my var str this is my code.console.log pat.test str...