国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
JavaScript 高級程序設計 第七章筆記 正則表達式

JavaScript 高級程序設計 第七章筆記

JAVASCRIPT 2010-05-19 14:23:50 閱讀22 評論0  字號: 訂閱

1)RegExp類構(gòu)造正則表達式

RegExp的構(gòu)造函數(shù)接受兩個參數(shù),第一個是描述需要進行匹配的模式字符串;第二個指定額外的處理命令(可選)

eg.    var reCat = new RegExp("cat", "gi");   //g表示匹配所有的"cat",i表示不區(qū)分大小寫;默認只匹配第一個出現(xiàn)的,而且區(qū)分大小寫

另一種寫法  var reCat = /cat/gi;

2)四種匹配正則表達式的方法

>> RegExp對象的

① test()方法

var a = "car"; var b = /car/; alert(b.test(a));

即使只出現(xiàn)一次也返回true,一次都沒出現(xiàn)則返回false

② exec()方法

返回一個數(shù)組,數(shù)組的第一個條目是第一個匹配,其他的是反向引用

var a = "a bat, a Cat, a fAt baT, a faT cat";  var b = /at/;   var arrMatch = b.exec(a);

arrMatch只包含一個條目:第一個at的實例

>> String對象的

① match()方法

返回一個包含在字符串中的所有匹配的數(shù)組,接受 /gi

② search()方法

返回第一個匹配的位置,類似indexOf(),無視參數(shù) /g

>> 備注

此外,String類的replace()和split()方法也可以用正則表達式當參數(shù)

3)元字符

以匹配問號為例,說下兩種構(gòu)造正則表達式方法的區(qū)別

var a = /\?/ ;          var a = new RegExp("\\?") ;

4) 字符類

① 簡單類 eg. [abc] 匹配a,b,c

② 負向類 eg. ^ab 不匹配a, b

③ 范圍類 [a-z] 匹配a到z

④ 組合類 [a-m1-4] 中間不能有空格

⑤ 預定義類

.      =     [^\n\r]                   =     除換行、回車外的任意字符

\d    =     [0-9]                    =     數(shù)字

\D    =     [^0-9]                  =     非數(shù)字字符

\s     =     [\t\n\x0B\f\r]        =     空白字符

\S    =     [^ \t\n\x0B\f\r]      =     非空白字符

\w    =     [a-zA-Z_0-9]       =     單詞字符(字母數(shù)字下劃線)

\W   =     [^ a-zA-Z_0-9]     =      非單詞字符

5)量詞

① 簡單量詞

?       出現(xiàn)0次或1次

*         0次或多次

+        1次或多次

{n}      n次

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

{n, }    至少n次

② 貪婪的、惰性的和支配性的量詞

greedy quantifier:先看整個字符串是不是匹配,不是就去掉最后一個字符再嘗試,一直重復直至不剩字符;①點里的量詞都是greedy

reluctant quantifier:看第一個字符是否匹配,不是就讀入下一個,一直重復道讀入整個字符串,和greedy相反;greedy的表達符號后加? 表示reluctant

possessive quantifier:只嘗試匹配整個字符串,不能則不作進一步嘗試;greedy的表達符號后加 + 表示possessive

③ 備注:IE和Opera不支持支配量詞,Mozilla會把支配看成貪婪

6)復雜模式

① 分組

幾個例子,自己看:

var reDogDog = /(dog){2} /g;

var re1 = /(dog)?/;  //match zero or one occurrences of dog

var re = /([bd]ad?)*/ ;   //match zero or more occurrences of "ba" "da" "bad" "dad"

var re = /(mon( and dad)?)/;  //match "mon" or "mon and dad"

.trim() 可以清除空格

② 反向引用(backreference)

表達式計算完后,每個分組都被存放在一個特殊的地方以備將來使用,這些存儲在分組中的特殊值成為反向引用

反向引用是按照從左到右遇到的左括號字符的順序進行創(chuàng)建和編碼的,分別用$1,$2,$3...表示(或\1,\2,\3...)

③ 候選(|)

用管道符分別對字符串進行匹配。因為兩個備選項存放在一個分組中,不管哪個被匹配了,都會存在RegExp.$1中以備將來使用

var reRedOrBlack = /(red|black)/;

通常的用途是論壇屏蔽敏感詞,eg.

JavaScript 高級程序設計 第七章筆記 - 小雅 - Late in Autumn
 
④ 非捕獲性分組——左括號后面加 “?:”
創(chuàng)建反向引用的分組,稱為捕獲性分組,存儲反向引用會降低匹配速度。而非捕獲性分組則不會創(chuàng)建反向引用,還可以擁有與匹配字符串序列同樣的能力,而無需存儲結(jié)果的開銷 
另外,如果用非捕獲性分組,RegExp.$1等將是空字串,replace方法也會把$1當成普通字符
通常用途是屏蔽評論文本中的惡意HTML標簽,eg.
JavaScript 高級程序設計 第七章筆記 - 小雅 - Late in Autumn
 ⑤ 前瞻
當某個特定的字符分組出現(xiàn)在另一個字符串之前時,才去捕獲它。
正向前瞻: var reBed = /(bed(?=room)/;   不是分組,分組不會考慮前瞻的存在
負向前瞻: var reBed = /(bed(?!room) /;    
>> JS支持前瞻,但不支持后瞻。后瞻可以匹配“匹配b當且僅當它前面沒有a”
⑥ 邊界
^ —— 行開頭; $ —— 行結(jié)尾; \b ——單詞的邊界; \B ——非單詞的邊界
⑦ 多行模式
var sToMatch = "First scecond\nthird fourth\nfifth sixth";
var reFirstWordOnLine = /^(\w+)$/gm;     \\  m選項醒目
var arrWords = sToMatch.match(reFirstWordOnLine);
7)RegExp對象
屬性lastIndex用處不小,它可以告訴你RE在哪個字符串中停止之前,查找了多遠
re.exec(tomatch);
alert(re.lastIndex);
每次調(diào)用完exec后,所在的位置賦給lastIndex,下次調(diào)用exec就從這里開始,因此,想每次都從頭開始匹配,須將lastIndex設為0
8)常用模式
匹配日期(5/5/2004):/(?:0[1-9]|[12][0-9]|3[01])\/(?:0[1-9]|1[0-2])\/(?:19|20\d{2})/
匹配郵件地址:/^(?
本站僅提供存儲服務,所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
javascript--正則表達式
javascript正則表達式
JavaScript正則替換去除字符串中特殊字符
java正則表達式 非捕獲組,捕獲組詳解
精通 JavaScript中的正則表達式 - JavaScript
正則表達式大全
更多類似文章 >>
生活服務
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服