驗(yàn)證, 格式化及正則表逹式這幾個(gè)單詞給讀者的第一印象可能會比較陌生。其實(shí), 開發(fā)者在日常的工作中已經(jīng)不知不覺地接觸過不少類似的事物, 比如說: 透過剖析字符串的格式去檢測某種模式; 當(dāng)特定的字符串模式被檢測或沒有檢測到時(shí)修改字符串至一定模式; 當(dāng)一些必要的屬性沒有被檢測到的時(shí)候, 返回錯(cuò)誤訊息等。因?yàn)橐恍┤粘J挛锶珉娫捥柎a, 姓氏字符的大寫, 貨幣格式, 郵編及國際標(biāo)準(zhǔn)圖書編號(ISBN)等數(shù)據(jù), 一般來說都會由第三方程序或用戶本身來提供的, 所以難以保證這些數(shù)據(jù)的格式是否合乎我們程序的要求。Flex Framework 本身就內(nèi)建了兩個(gè)強(qiáng)大的類分別為Validator 和Formatter, 它們分別為各個(gè)UI 組件提供這一類型剖析及格式化的功能。接下來就是正則表逹式(Regular Expressions), 它是一個(gè)新引進(jìn)入的ActionScript 語言及Flash Player 的編程工具。它強(qiáng)大的功能為不少用戶留下深刻的印象, 但其過于復(fù)雜的語法也使人對它又愛又恨。
Validator, 即驗(yàn)證器作為一個(gè)事件發(fā)送器, 可以用來檢測Flex 控件的屬性, 以確保它可以滿足一些的預(yù)定的參數(shù)。這些參數(shù)可以以被指定為某種的格式, 例如一個(gè)屬性是否必要的或者該屬性的長度限制等。由于驗(yàn)證器的高度整合性, 通過以下兩個(gè)設(shè)置, 驗(yàn)證的結(jié)果可以輕易地顯示出來:
1. 設(shè)置驗(yàn)證器類的事件源, 即是使用者輸入的接口。
2. 設(shè)置那些屬性會被會檢查。
驗(yàn)證器會發(fā)送一個(gè)事件去控件, 根據(jù)所傳遞的事件, 這個(gè)控件會在驗(yàn)證器內(nèi)顯示一個(gè)自定義的錯(cuò)誤信息。Flex Framework 本身已經(jīng)提供了不少內(nèi)建的驗(yàn)證器, 例如: 信用卡號碼, 電話號碼, 電郵地址及社會安全號碼等。在這個(gè)章節(jié)里, 我們集中討論如何建設(shè)自定義的驗(yàn)證器及如何將驗(yàn)證器及相關(guān)事件跟控件整合。
Formatter, 以下稱為格式器, 負(fù)責(zé)一個(gè)簡單而非常重要的工作, 那就是把任何傳入的數(shù)值轉(zhuǎn)換作所指定的格式。比如將一個(gè)包含9 位連續(xù)數(shù)目的字符串轉(zhuǎn)換成一個(gè)格式化的電話號碼,那就是由555555555 轉(zhuǎn)成(555) 555-5555, 還有日期格式轉(zhuǎn)換, 或不同國家郵政編號的格式轉(zhuǎn)換等。格式器本身就為用戶定義了一個(gè)重要的方法, 那就是format(格式)。它是用來接收輸入數(shù)據(jù)以及返回一個(gè)恰當(dāng)?shù)淖址?br />
以上所提及的兩個(gè)類, 原則上是可以通過正則表達(dá)式(Regular Expression)來進(jìn)行字符串的處理, 雖然這種方法在基礎(chǔ)類中是不常用的。正則表達(dá)式是一種被公認(rèn)為強(qiáng)大, 高雅且難于應(yīng)用的現(xiàn)代化編程開發(fā)工具。程序員可以使用這套工具去為一些特定的字符串創(chuàng)建各種復(fù)雜的處理規(guī)則。幾乎所有主流的編程語言都內(nèi)建了正則表達(dá)式處理引擎, 雖然它們可能功能上各有分別, 但語法卻是大致相同的。所以, 正則表達(dá)式為你的作品來說絕對是一套非常實(shí)用的工具。在ActionScript 里頭, 正則表達(dá)式是以一個(gè)名為RegExp 的類來表逹的, 它包含著了兩個(gè)基礎(chǔ)的方法:
“test”, 是用于檢測一個(gè)字符串是否包含任何與RegExp相配的文字, 并返回一個(gè)布朗值(True/ False).
“exec”, 用于返回一個(gè)包含所有相配的項(xiàng)目的數(shù)組及對象, 以及包含這個(gè)事件第一次發(fā)生時(shí)所在字符串的相對位置的字符串。
正則表達(dá)式也可以通過match, search 及replace 等String 類的方法來進(jìn)行檢測。當(dāng)中, 我發(fā)現(xiàn)String 類的方法是十分有用的, 因?yàn)樵谡齽t表達(dá)式中它們允許來對個(gè)別的字符進(jìn)行處理。
正則表達(dá)式是一個(gè)非常龐大的主題, 如果要對其進(jìn)深入探討的話, 恐怕要用掉整本書的篇幅。
所以在本章節(jié)中, 我們只會對特定的觀點(diǎn)進(jìn)行探討以及為一些一般性的問題提供解決方案,而不會嘗試去展示一些比較普遍的使用個(gè)案。
目錄
15.1.在TextInput及TextArea控件上使用Validator 和Formatter
15.2.如何創(chuàng)建一個(gè)自定義的Formatter
15.3.使用正則表達(dá)式創(chuàng)建國際化郵政編碼Validator
15.4.如何創(chuàng)建一個(gè)Validator去驗(yàn)證通用商品代碼(UPC)
15.5.如何去驗(yàn)證多個(gè)Combo Box及Radio Button組件
15.6.如何在一個(gè)表單內(nèi)通過ToolTips來返映一個(gè)錯(cuò)誤
15.7.如何使用正則表達(dá)式去定位電郵地址
15.8.如何使用正則表達(dá)式去驗(yàn)證信用卡號碼
15.9.如何使用正則表達(dá)式來驗(yàn)證ISBN號
15.10.如何通過指定字符類(Explicit Character Class)來創(chuàng)建正則表達(dá)式
15.11.如何在正則表達(dá)式中使用字符類型
15.12.如何通過子表達(dá)式來驗(yàn)證IP 地址是否有效呢?
15.13.如何使用正則表達(dá)式來為不同類型進(jìn)行匹配?
15.14.如何用正則表達(dá)式來為行的開端或結(jié)尾進(jìn)行匹配?
15.15.如何使用逆向引用?
15.16.如何使用向前查找組或向后查找組語法?
新聞熱點(diǎn)
疑難解答