選擇題
簡答題
- 請寫一個通用式來進行身份證字號的簡易比對。(假設身份證字號是由一個英文字母加上九個數字所組成。)
- 請寫一個通用式來進行信用卡卡號的簡易比對。(假設信用卡卡號的格式是 xxxx-xxxx-xxxx-xxxx,其中每一個 x 都是代表一個數字。)
- 給定一個字串變數 x = " 金 城 武 ",請說明如何使用通用式來刪除此字串中的空白(包含全形空白、半形空白、定位鍵等)。
- 請說明如何將通用式採用的「貪心比對」改成「最小比對」。
- 請說明通用式所採用的「越左越貪」的機制為何?請舉實例來說明。
- 請說明下列通用式的涵義:
- /^xy/
- /xy$/
- /[13579]/
- /[0-9]/
- /[a-z0-9]/
- /[a-zA-Z0-9]/
- /b[aeiou]t/
- /[^0-9]/
- /[^aeiouAEIOU]/
- /a.b/
- /a.*b/
- /a.*?b/
- /[^\^]/
- /^.+@.+\..{2,3}$/
程式題
請盡量使用本章所學到的通用表示法來完成下列作業:
- (*) 允許身份證字號第一個字母大小寫均可: 請修改範例 regExpId01.htm,產生新網頁,讓使用者輸入的身份證字號的第一個英文字母不限大寫或小寫。
- (*) 對英文姓名進行修正: 請修改範例 regExpEnglishName01.htm,產生新網頁,讓使用者在驗證資料時,程式碼會先對英文名字進行修正:把每個字彙的第一個字母改成大寫,其餘小寫。
- (*) 亂數產生身份證字號: 請根據身份證號碼的編碼規則,利用亂數,一次產生五組有效的身份證號碼,範例表單如下:
請注意:
- 輸入的英文字母必須是合格的。
- 必須將英文字母轉成大寫,再加上九位數字。
- 必須利用亂數產生,所以每次產生的五組號碼都應該不一樣。
- (*) 亂數產生信用卡卡號: 請根據信用卡號碼的編碼規則,利用亂數,一次產生五組有效的信用卡號碼,範例表單如下:
- (**) 身份證字號驗證: 對使用者輸入的身份證字號進行基本驗證:請你必須設計一個網頁,包含一個文字欄位,能讓使用者輸入個人的身份證字號,並在按下「驗證」鈕後,驗證此輸入資料。若輸入資料滿足身份證字號的編碼規則,則以警告視窗顯示「通過」,否則顯示「不通過」。(身份證字號的第一個字母,可以允許是大寫或小寫。)範例表單如下:
- (**) 信用卡卡號驗證: 對使用者輸入的信用卡卡號進行基本驗證:請你必須設計一個網頁,包含一個下拉式選單,可以讓使用者填入信用卡類別(Visa、Master、American Express),以及一個文字欄位,能讓使用者輸入個人的信用卡卡號,並在按下「驗證」鈕後,驗證此輸入資料。若輸入資料滿足信用卡卡號的編碼規則,則以警告視窗顯示「通過」,否則顯示「不通過」。範例表單如下:
- (***) 電子郵件驗證: 更精準的電子郵件通用式:在範例 regExpEmail01.htm 中,我們使用一個簡單的通用式「/^.+@.+\..{2,3}$/」來代表電子郵件的格式。但是事實上,此通用式並不完全精準,請你設計一個網頁 regExpEmail02.htm,使用較複雜的通用式,可以更精準地表示一般電子郵件的格式,網頁格式如下:
請務必說明你的通用式如何能精準地描述電子郵件的格式。
- (***) HTTP網址驗證: 請設計一個網頁,能夠精確地描述一個以「http://」開始的個人網址,基本要求如下:
網頁格式如下:
- 合格網址範例:http://www.cs.nthu.edu.tw/~jang", "http://www.mathworks.com", "http://www.cs.nthu.edu.tw:4500/~jang/publie/index.asp"
- 不合格網址範例:"www.mathworks.com", "http://www..com"
請務必說明你的通用式如何能精準地描述 http 的網址格式。
- (**) 對表單資料進行修正及驗證: 請用通用表示法來對下列表單資料進行修正及驗證:
- (***) 抽取網頁中的連結: 在此作業中,我們將練習使用通用表示法來抽取網頁中的連結(包含文字與網址)。為了取得網頁的內容,我們必須改用 WSH (Window Scripting Host) 來進行此作業,一個簡單的 WSH 範例程式如下:
若要執行此範例,請下載此範例後,在 DOS 視窗輸入
cscript titleExtract.js 假設網路暢通,則此時在視窗所顯示的結果如下:Microsoft (R) Windows Script Host Version 5.7 Copyright (C) Microsoft Corporation 1996-2001. All rights reserved. index = 14 title = Web Programming (CS3431): Test page for link extraction 由此可見此範例可以正確地抽出所給網頁的標題。請注意,WSH 檔案的副檔名是 js,代表所用的程式語言是 JavaScript,所以本節所教的通用表示法都可以使用。唯一的小差別是:若要印出字串,在 WSH 必須使用 WScript.Echo("...")。你的任務,就是改寫此檔案,使其能使用通用表示法來抓出某一個網頁的連結,包含連結的文字與連結的網址。請注意,你的程式碼的功能可以由淺入深,達到下述三項功能:
- 能夠正確地抽取類似下列的連結:
- 介於 <xmp> 與 </xmp> 之間的連結,不應該被抽取。
- 能夠分辨同網域 (Same-domain) 的連結和異網域 (Different-domain)的連結。
若以本作業網頁為例,所產生的輸出應該類似下述結果:
Microsoft (R) Windows Script Host Version 5.7 Copyright (C) Microsoft Corporation 1996-2001. All rights reserved. regExpId01.htm ===> example/regExpId01.htm ===> Same domain regExpEnglishName01.htm ===> example/regExpEnglishName01.htm ===> Same domain generateIdNumber01.htm ===> exerciseTemplate/generateIdNumber01.htm ===> Same domain ... titleExtract.js ===> example/titleExtract.js ===> Same domain 所給網頁 ===> http://mirlab.org/jang/courses/webProgramming/homework/linkExtraction/testPage4linkExtraction.htm ===> Same domain It's me ===> /jang ===> Same domain This is Google ===> http://www.google.com ===> Different domain JavaScript 程式設計與應用:用於用戶端 ===> /jang/books/javaScript ===> Same domain (請試看看助教所給的測試網頁。)
JavaScript 程式設計與應用:用於網頁用戶端