《通用表示法》PPT课件.ppt
《《通用表示法》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《通用表示法》PPT课件.ppt(45页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、第十章通用表示法張智星http:/mirlab.org/jang台大資工系多媒體檢索實驗室JavaScript 程式設計與應用:用於網頁用戶端本章大綱n大綱n本章介紹通用表示法,使用強大的字串比對方式,可以在進行JavaScript程式設計時,能夠有事半功倍的效果。n主題n10-1:資料驗證n10-2:資料修改n10-3:通用式相關列表n10-4:常用資料規則2/45JavaScript 程式設計與應用:用於網頁用戶端10-1:資料驗證n本小節介紹通用表示法及其用法。3/45JavaScript 程式設計與應用:用於網頁用戶端基本介紹n通用表示法或通用式(Regularexpressions)
2、是在UNIX中發展出的字串比對技巧。nRegularexpressions應該翻成正規表示法或正規式,但是我們使用通用表示法或通用式似乎更能適切地表達其功能。n目標:用格式簡單、功能強大的符號來比對複雜的字串。n許多軟體或指令都支援通用表示法。nJavaScript及Vbscript:格式稍不同,但功能一樣nUnix指令:如grep、sed、awk、ed、vi、emacs等。nMATLAB,Python,Perl,4/45JavaScript 程式設計與應用:用於網頁用戶端JavaScript的通用式n通用式是一個內建的物件n建構函數(Constructionfunctoin)為RegExp。
3、n用法n說明npattern是通用表示法的字串。nflag是比對的方式:ng:全域比對(Globalmatch)ni:忽略大小寫(Ignorecase)ngi:全域比對並忽略大小寫re=newRegExp(pattern,flag)re=/pattern/flag/上面的簡寫格式5/45JavaScript 程式設計與應用:用於網頁用戶端範例10-1(1)n主題:簡易身分證字號驗證n連結:regExpID01.htm(remotehost,localhost)n程式碼重點n說明nre=/A-Zd9$/就是一個通用式。n以re.test()比對字串string,回傳true代表比對正確,反之回傳
4、false。functioncheckID(string)re=/A-Zd9$/;if(re.test(string)alert(成功!符合+re+的格式!);elsealert(失敗!不符合+re+的格式!);6/45JavaScript 程式設計與應用:用於網頁用戶端範例10-1(2)n通用表示法解釋:/A-Zd9$/n比對數個字元中的任一個字元,可用,並可用-來代表字母或是數字的範圍。nA-Z 代表由A至Z的任一個英文字母。(亦可寫成ABCDEFGHIJKLMNOPQRSTUVWXYZ)na-zA-Z 代表不限大小寫的一個英文字母nd 代表0至9的數字。n亦可寫成0-9或01234567
5、89n9代表前一個字元的重複次數。nd9 代表需要有九個數字。n代表字串開始位置。n$代表字串結束位置。n若沒以上兩個符號,那麼只要任一個字串中間比對成功即可。7/45JavaScript 程式設計與應用:用於網頁用戶端範例10-2n主題:簡易信用卡卡號驗證n連結:regExpCreditCardNumber01.htm(remotehost,localhost)n程式碼重點n說明n也可寫成:re=/(d4-)3d4$/n重複的部分多於一個字母,必須將需要重複的部分放入小括號內,再由大括號包夾重複的次數。re=/d4-d4-d4-d4$/8/45JavaScript 程式設計與應用:用於網頁用
6、戶端範例10-3n主題:簡易英文名字驗證n連結:regExpEnglishName01.htm(remotehost,localhost)n程式碼重點n說明nA-Za-z-:一個英文字母(可以大寫或小寫),或字元-n-:已經有特殊意義,必須在-之前加上n+:重複前一個字元一次或多次n A-Za-z-+:英文字或-形成的字串,且長度至少為1ns:空白字元,可以是空格、定位鍵、換列字元re1=/A-Za-z-+s+A-Za-z-+$/;re2=/A-Za-z-+s+A-Za-z-+s+A-Za-z-+$/;9/45JavaScript 程式設計與應用:用於網頁用戶端範例10-4n主題:簡易電子郵件
7、格式驗證n連結:regExpEmail01.htm(remotehost,localhost)n程式碼重點n說明n.:比對任一個字元(不包含換列字元)n.+:長度不為零的字串n.:.原先已具有特殊意義,必須加上反斜線n.2,3:長度為2到3個字元re=/.+.+.2,3$/;10/45JavaScript 程式設計與應用:用於網頁用戶端範例10-5n主題:電子郵件格式驗證(可避開含有空白的電子郵件帳號)n連結:regExpEmail02.htm(remotehost,localhost)n說明ns:所有可能的空白字元,包含空白、定位鍵、換列字元等(不包含全形的空白)n:在中括弧內是代表否定注意
8、注意:在一般通用表示法的意義是字串開始的位置,但放在中括弧內中括弧內,則代表否定或非。ns+:一個或多個非空白字元所形成的字串re=/s+s+.s2,3$/;11/45JavaScript 程式設計與應用:用於網頁用戶端範例10-5(2)n主題:電子郵件格式驗證(可避開含有空白的電子郵件帳號)n若要對電郵進行更嚴苛的比對,上述通用式可以改成n其中w代表一個數字、字母或底線,全等於a-zA-Z0-9_。(但這樣嚴苛的標準也可能錯誤地阻擋正常的電郵。)re=/w+w+.w2,3$/;12/45JavaScript 程式設計與應用:用於網頁用戶端範例10-6n主題:通用式的完整測試頁(列出比對到字串
9、)n連結:regExpTest01.htm(remotehost,localhost)n程式碼重點n說明n使用了字串的match()方法,對通用式進行比對。nmatched=str.match(regexp)可將比對到的字串送到一個陣列,以便後續列出比對結果。varmatched=str.match(regexp);for(vari=0;imatched.length;i+)dispstr=dispstr+n+matchedi;13/45JavaScript 程式設計與應用:用於網頁用戶端10-2:資料修改n本小節介紹如何使用通用表示法來進行字串字串的修改。14/45JavaScript 程式
10、設計與應用:用於網頁用戶端通用表示法的字串方法n用途n強化搜尋比對n立即修改(修特別是改表單資料)n方法字串方法字串方法 功能功能 string.search(re)通用式re在某個字串string出現的位置string.match(re)從字串string抽取符合通用式re的子字串,並以字串陣列傳回string.replace(re,newStr)將字串string符合通用式re的部分,代換為newStr15/45JavaScript 程式設計與應用:用於網頁用戶端範例10-7n主題:搜尋並列出位置(判斷第一個符合的位置)n連結:regExpSearch01.htm(remotehost,l
11、ocalhost)n程式碼重點n說明nstr.search(re)將會傳回符合re的第一個位置。(若沒找到則回傳-1)nstr.search(re)只能用來搜尋某個通用式在一個字串的第一次出現的位置。functionregExpMatch(string,pattern,flag)varregexp=newRegExp(pattern,flag);varindex=string.search(regexp);alert(index);16/45JavaScript 程式設計與應用:用於網頁用戶端範例10-8n主題:搜尋並列出位置(取出符合的所有子字串)n連結:regExpMatch01.htm(
12、remotehost,localhost)n程式碼重點n說明n使用string.match(regexp)可回傳符合的所有子字串。n傳回的matched變數是一個陣列,包含所比對到的字串。functionregExpMatch(string,pattern,flag)varregexp=newRegExp(pattern,flag);varmatched=string.match(regexp);alert(matched);17/45JavaScript 程式設計與應用:用於網頁用戶端範例10-9n主題:搜尋並代換n連結:regExpReplace01.htm(remotehost,loca
13、lhost)n程式碼重點n說明n使用str.replace將符合通用式的第一部分替換成新字串。n欲將所有符合的替換成新字串,只要將選項改成g。functionregExpReplace(strId,pat1id,pat2id,flagId)varregexp=newRegExp(pat1id.value,flagId.value);varstr=strId.value;varnewString=str.replace(regexp,pat2id.value);alert(newString);18/45JavaScript 程式設計與應用:用於網頁用戶端範例10-10n主題:修正中文姓名(去除
14、表單前後空白)n連結:regExpReplace02.htm(remotehost,localhost)n程式碼重點n說明ns:英文空白字元或大五碼的全形空白。nreplace(/s+/g,):將(/s+/g 此類字串全部代換為空字串。functioncheckChineseName(uiControl)uiControl.value=uiControl.value.replace(/s+/g,);19/45JavaScript 程式設計與應用:用於網頁用戶端範例10-11n主題:修改英文姓名(消除前後空白並合併中間空白)n連結:regExpReplace03.htm(remotehost,l
15、ocalhost)n程式碼重點n說明n|可以代表或。n刪除頭尾字串兩式可合併:nstr=str.replace(/s+|s+$/g,);str=str.replace(/s+/g,);/刪除頭部的空白字串str=str.replace(/s+$/g,);/刪除尾部的空白字串str=str.replace(/s+/g,);/將空白字串換成一半形空格20/45JavaScript 程式設計與應用:用於網頁用戶端通用式的比對原則n貪心比對(GreedyMatch)n遇到重複字元時,貪到越多的字元越好。n最小比對(MinimumMatch)n必須在重複字元後面加上一個問號,代表在可能比對成功的情況下,
16、比對越少越好。21/45JavaScript 程式設計與應用:用於網頁用戶端範例10-12n主題:通用式的貪心比對與最小比對n連結:regExpGreedy01.htm(remotehost,localhost)n程式碼重點n說明n第一個通用式是採取預設的貪心比對貪心比對,因此比對到的字串會是在比對成功的情況下最長長的字串。n第二個通用式中,加了一個問號,採取最小比對最小比對,因此比對到的字串是在比對成功的情況下最短短的字串。re=/b.*t/;re=/b.*?t/;22/45JavaScript 程式設計與應用:用於網頁用戶端範例10-13n主題:越左越貪比對方式n連結:regExpGree
17、dy02.htm(remotehost,localhost)n程式碼重點n說明n通用式中加括號,代表符合比對條件者,將被設定至RegExp.$1(簡寫成$1)、RegExp.$2(簡寫成$2)等變數中。n使用貪心比對時,會採用越左越貪越左越貪,若要推翻此原則,可適時使用問號,以採用最小比對。n第一個通用式採取預設的貪心比對,第二個通用式適時加入問號,因此結果不同。re=/a(.*)b(.*)d/;re=/a(.*?)b(.*)d/;23/45JavaScript 程式設計與應用:用於網頁用戶端範例10-14n主題:對調兩個英文字(replace的運用)n連結:regExpReplace04.h
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 通用表示法 通用 表示 PPT 课件
限制150内