第十章通用表示法.ppt

上传人:sccc 文档编号:4787879 上传时间:2023-05-15 格式:PPT 页数:45 大小:1.47MB
返回 下载 相关 举报
第十章通用表示法.ppt_第1页
第1页 / 共45页
第十章通用表示法.ppt_第2页
第2页 / 共45页
第十章通用表示法.ppt_第3页
第3页 / 共45页
第十章通用表示法.ppt_第4页
第4页 / 共45页
第十章通用表示法.ppt_第5页
第5页 / 共45页
点击查看更多>>
资源描述

《第十章通用表示法.ppt》由会员分享,可在线阅读,更多相关《第十章通用表示法.ppt(45页珍藏版)》请在三一办公上搜索。

1、第十章通用表示法,張智星jangmirlab.orghttp:/mirlab.org/jang台大資工系 多媒體檢索實驗室,本章大綱,大綱本章介紹通用表示法,使用強大的字串比對方式,可以在進行 JavaScript 程式設計時,能夠有事半功倍的效果。主題10-1:資料驗證 10-2:資料修改 10-3:通用式相關列表 10-4:常用資料規則,2/45,10-1:資料驗證,本小節介紹通用表示法及其用法。,3/45,基本介紹,通用表示法或通用式(Regular expressions)是在 UNIX 中發展出的字串比對技巧。Regular expressions 應該翻成正規表示法或正規式,但是我

2、們使用通用表示法或通用式似乎更能適切地表達其功能。目標:用格式簡單、功能強大的符號來比對複雜的字串。許多軟體或指令都支援通用表示法。JavaScript 及 Vbscript:格式稍不同,但功能一樣Unix 指令:如 grep、sed、awk、ed、vi、emacs 等。MATLAB,Python,Perl,4/45,JavaScript 的通用式,通用式是一個內建的物件建構函數(Construction functoin)為 RegExp。用法說明pattern 是通用表示法的字串。flag 是比對的方式:g:全域比對(Global match)i:忽略大小寫(Ignore case)gi:

3、全域比對並忽略大小寫,5/45,範例10-1(1),主題:簡易身分證字號驗證連結:regExpID01.htm(remote host,local host)程式碼重點說明re=/A-Zd9$/就是一個通用式。以re.test()比對字串string,回傳true代表比對正確,反之回傳false。,6/45,範例10-1(2),通用表示法解釋:/A-Zd9$/比對數個字元中的任一個字元,可用,並可用-來代表字母或是數字的範圍。A-Z 代表由 A 至 Z 的任一個英文字母。(亦可寫成ABCDEFGHIJKLMNOPQRSTUVWXYZ)a-zA-Z 代表不限大小寫的一個英文字母d 代表0 至 9

4、 的數字。亦可寫成0-9或0123456789 9 代表前一個字元的重複次數。d9 代表需要有九個數字。代表字串開始位置。$代表字串結束位置。若沒以上兩個符號,那麼只要任一個字串中間比對成功即可。,7/45,範例10-2,主題:簡易信用卡卡號驗證連結:regExpCreditCardNumber01.htm(remote host,local host)程式碼重點說明也可寫成:re=/(d4-)3d4$/重複的部分多於一個字母,必須將需要重複的部分放入小括號內,再由大括號包夾重複的次數。,8/45,範例10-3,主題:簡易英文名字驗證連結:regExpEnglishName01.htm(rem

5、ote host,local host)程式碼重點說明A-Za-z-:一個英文字母(可以大寫或小寫),或字元-:已經有特殊意義,必須在-之前加上+:重複前一個字元一次或多次 A-Za-z-+:英文字或-形成的字串,且長度至少為1s:空白字元,可以是空格、定位鍵、換列字元,9/45,範例10-4,主題:簡易電子郵件格式驗證連結:regExpEmail01.htm(remote host,local host)程式碼重點說明.:比對任一個字元(不包含換列字元).+:長度不為零的字串.:.原先已具有特殊意義,必須加上反斜線.2,3:長度為 2到3個字元,10/45,範例10-5,主題:電子郵件格式驗

6、證(可避開含有空白的電子郵件帳號)連結:regExpEmail02.htm(remote host,local host)說明s:所有可能的空白字元,包含空白、定位鍵、換列字元等(不包含全形的空白):在中括弧內是代表否定注意:在一般通用表示法的意義是字串開始的位置,但放在中括弧內,則代表否定或非。s+:一個或多個非空白字元所形成的字串,11/45,範例10-5(2),主題:電子郵件格式驗證(可避開含有空白的電子郵件帳號)若要對電郵進行更嚴苛的比對,上述通用式可以改成其中 w 代表一個數字、字母或底線,全等於 a-zA-Z0-9_。(但這樣嚴苛的標準也可能錯誤地阻擋正常的電郵。),12/45,範

7、例10-6,主題:通用式的完整測試頁(列出比對到字串)連結:regExpTest01.htm(remote host,local host)程式碼重點說明使用了字串的 match()方法,對通用式進行比對。matched=str.match(regexp)可將比對到的字串送到一個陣列,以便後續列出比對結果。,13/45,10-2:資料修改,本小節介紹如何使用通用表示法來進行字串字串的修改。,14/45,通用表示法的字串方法,用途強化搜尋比對立即修改(修特別是改表單資料)方法,15/45,範例10-7,主題:搜尋並列出位置(判斷第一個符合的位置)連結:regExpSearch01.htm(rem

8、ote host,local host)程式碼重點說明str.search(re)將會傳回符合 re 的第一個位置。(若沒找到則回傳-1)str.search(re)只能用來搜尋某個通用式在一個字串的第一次出現的位置。,16/45,範例10-8,主題:搜尋並列出位置(取出符合的所有子字串)連結:regExpMatch01.htm(remote host,local host)程式碼重點說明使用string.match(regexp)可回傳符合的所有子字串。傳回的 matched 變數是一個陣列,包含所比對到的字串。,17/45,範例10-9,主題:搜尋並代換連結:regExpReplace01

9、.htm(remote host,local host)程式碼重點說明使用str.replace將符合通用式的第一部分替換成新字串。欲將所有符合的替換成新字串,只要將選項改成g。,18/45,範例10-10,主題:修正中文姓名(去除表單前後空白)連結:regExpReplace02.htm(remote host,local host)程式碼重點說明s:英文空白字元或大五碼的全形空白。replace(/s+/g,):將(/s+/g 此類字串全部代換為空字串。,19/45,範例10-11,主題:修改英文姓名(消除前後空白並合併中間空白)連結:regExpReplace03.htm(remote

10、host,local host)程式碼重點說明|可以代表或。刪除頭尾字串兩式可合併:str=str.replace(/s+|s+$/g,);,20/45,通用式的比對原則,貪心比對(Greedy Match)遇到重複字元時,貪到越多的字元越好。最小比對(Minimum Match)必須在重複字元後面加上一個問號,代表在可能比對成功的情況下,比對越少越好。,21/45,範例10-12,主題:通用式的貪心比對與最小比對連結:regExpGreedy01.htm(remote host,local host)程式碼重點說明第一個通用式是採取預設的貪心比對,因此比對到的字串會是在比對成功的情況下最長的

11、字串。第二個通用式中,加了一個問號,採取最小比對,因此比對到的字串是在比對成功的情況下最短的字串。,22/45,範例10-13,主題:越左越貪比對方式連結:regExpGreedy02.htm(remote host,local host)程式碼重點說明通用式中加括號,代表符合比對條件者,將被設定至 RegExp.$1(簡寫成$1)、RegExp.$2(簡寫成$2)等變數中。使用貪心比對時,會採用越左越貪,若要推翻此原則,可適時使用問號,以採用最小比對。第一個通用式採取預設的貪心比對,第二個通用式適時加入問號,因此結果不同。,23/45,範例10-14,主題:對調兩個英文字(replace的運

12、用)連結:regExpReplace04.htm(remote host,local host)程式碼重點說明/(w+)s+(w+)/:判斷兩單字位置。replace(regexp,$2$1):對調兩單字位置。,24/45,範例10-15,主題:表單資料的修正與驗證連結:regExpReplace05.htm(remote host,local host)說明利用 replace()在 onBlur 事件時,先修正文字欄位,再進行驗證。onBlur 事件後,JavaScript 會以通用式對表單元素的值進行修正與驗證。,25/45,10-3:通用式相關列表,本小節列出常用的方法與通用式字元介紹

13、。,26/45,通用式方法列表,27/45,通用式的應用(1),28/45,通用式的應用(2),說明:/代表一個字串的開始位置,同理/$/代表一個字串的結束位置,但如果 就代表否定。在字元前加上,可避掉特殊字元的特殊意義。,29/45,通用式的特定字元,說明RegExp(pattern,flag)的方式建立通用式物件時,若 pattern 包含以反斜線開頭的特殊字元(例如 d、w、s 等)時,必須加上一個反斜線。例:re=new RegExp(d+sw+,g);,30/45,定義字元的重複次數,31/45,通用式總列表(1),32/45,通用式總列表(2),33/45,通用式總列表(3),34

14、/45,通用式總列表(4),35/45,通用式總列表(5),36/45,10-4:常用資料規則,本小節介紹日常生活中常用的資料規則。,37/45,身分證字號的檢查碼(1),基本認知共有10位第一位為英文字母第二個數字男生為 1,女生為 2最後一位為檢查碼,經過之前一個字母與 8 個數字的組合計算後得出。,38/45,身分證字號的檢查碼(2),計算方法英文代號轉換成數字(代表出生時的戶籍所在地)英文轉成的數字,個位數乘再加上十位數 各數字從右到左依次乘、求出(2)、(3)之和 求出(4)除10後之餘數,用10減該餘數,結果就是檢查碼,若餘數為0,檢查碼就是 0。,39/45,身分證字號的檢查碼(

15、3),英文代號以下表轉換成數字(代表出生時的戶籍所在地):A=10 台北市 J=18 新竹縣 S=26 高雄縣 B=11 台中市 K=19 苗栗縣 T=27 屏東縣 C=12 基隆市 L=20 台中縣 U=28 花蓮縣 D=13 台南市 M=21 南投縣 V=29 台東縣 E=14 高雄市 N=22 彰化縣 W=32 金門縣 F=15 台北縣 O=35 新竹市 X=30 澎湖縣 G=16 宜蘭縣 P=23 雲林縣 Y=31 陽明山 H=17 桃園縣 Q=24 嘉義縣 Z=33 連江縣 I=34 嘉義市 R=25 台南縣,40/45,身分證字號的檢查碼(4),範例例如:身分證號碼是 3+18+8

16、+0+0+10+12+6+14+5=76 76/10=7.6(餘數)10-6=4(檢查碼),41/45,信用卡卡片編碼(1),不同卡別編碼規則信用卡號的最後一個數字就是信用卡的檢查碼。,42/45,信用卡卡片編碼(2),計算方法將信用卡的每個數字設定權重:從右向左,檢查碼除外,每個數字的權重分別是 2、1、2、1、2、1.。(若信用卡共有16碼,那麼最左邊數字的權重是 2;若信用卡卡號共有15碼,那麼最左邊數字的權重就是 1。)將每個數字乘上權重,所得的加權數字若大於 9,那麼就從這加權數字裡扣除 9。將所有處理過的加權數字全部加總起來,並且除以 10,取其餘數。若餘數是 0,檢查碼就是 0,否則檢查碼就等於 10 減掉此餘數所得的值。,43/45,信用卡卡片編碼(3),範例1若某張 Visa 信用卡卡號是 4311-4656-0640-6131,則其計算過程如下:,44/45,信用卡卡片編碼(4),範例2美國運通卡(American Express),卡號是 3728 024906 54257(只有 15 碼),其計算過程如下:,45/45,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 建筑/施工/环境 > 农业报告


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号