var stest = "Ask and it will be given to you; seek and you will find; knock and the door will be opened to you. Matthew 7:7"
這句話出自聖經,如果我們要搜尋出自聖經的哪個章節,正規表示式的物件變數如下
var rtest = /\w* \d*:\d*/;
這是正規表示式的字面常數 (literal) ,兩個斜線範圍即是正規表示式。由於聖經的章節字串利用為 "Matthew 7:7" ,格式會重複出現的有文字、數字、分號及數字。
\w 表示任意文字的字元,後面緊接的星號表示 \w 可以有任意個,因此 \w* 就是代表連續沒有空格的一組文字字元,這裡 "Matthew" 符合這樣的規則,同樣的 , "馬太福音" 也符合這樣的規則。
\w* 後空一格,表示其後有一個空白符號。其後再接 \d* , \d 表示任意數字的字元,這裡的數字必須是 0 到 9 任一個,所以 \d* 表示任意長度的數字,可以是一位數、兩位數或更多位數。
後面沒有空格緊接冒號,再接一組 \d* ,最後以斜線結尾。
雖然直接看字串是 Matthew 7:7 ,然而很多時候處理資料用肉眼逐一檢視每個字串的細節是相當費時、費力的,因此利用正規表示式可以有效搜尋、替換、處理字串。
基本 RegExp 物件的字面常數格式如下
var patt=/pattern/modifiers;
pattern 即是正規表示式的樣式 (pattern), modifiers 則是修飾詞 (modifier) ,屬於額外的標記符號,有 i 、 g 兩個, i 表示區分大小寫, g 表示範圍為全域。
RegExp 物件有以下的屬性 (attribute)
屬性 | 描述 |
---|---|
source | 字串形式 |
global | 記錄是否有 g 修飾詞 |
ignoreCase | 記錄是否有 i 修飾詞 |
另有以下常用的方法 (method)
方法 | 描述 |
---|---|
toString() | 回傳物件的字串形式 |
exec(string) | 測試 string 中是否有符合正規表示式的子字串,如果有,就回傳該子字串 |
test(string) | 測試 string 中是否有符合正規表示式的子字串,如果有,就回傳 true |
舉例示範如下
function run() { var c = document.getElementById("content"); var n1 = document.createElement("p"); var n2 = document.createElement("p"); var n3 = document.createElement("p"); var n4 = document.createElement("p"); var n5 = document.createElement("p"); var n6 = document.createElement("p"); var n7 = document.createElement("p"); var n8 = document.createElement("p"); var stest1 = "Ask and it will be given to you; seek and you will find; knock and the door will be opened to you. Matthew 7:7" var stest2 = "你們祈求,就給你們;尋找,就尋見;叩門,就給你們開門。 馬太福音 7:7" var t1 = /[A-Z]\w* \d*:\d*/; var t2 = t1.test(stest1); var t3 = t1.test(stest2); var t4 = t1.source; var t5 = t1.global; var t6 = t1.ignoreCase; var t7 = t1.multiline; var t8 = t1.lastIndex; n1.appendChild(document.createTextNode(t1)); c.appendChild(n1); n2.appendChild(document.createTextNode(t2)); c.appendChild(n2); n3.appendChild(document.createTextNode(t3)); c.appendChild(n3); n4.appendChild(document.createTextNode(t4)); c.appendChild(n4); n5.appendChild(document.createTextNode(t5)); c.appendChild(n5); n6.appendChild(document.createTextNode(t6)); c.appendChild(n6); n7.appendChild(document.createTextNode(t7)); c.appendChild(n7); n8.appendChild(document.createTextNode(t8)); c.appendChild(n8); } /* 《程式語言教學誌》的範例程式 http://pydoing.blogspot.com/ 檔名:reg01.js 功能:示範 JavaScript 程式 作者:張凱慶 時間:西元 2010 年 11 月 */
利用以下的 HTML 文件開啟
<html> <head> <title>JavaScript Demo</title> <script src="reg01.js" type="text/javascript"></script> </head> <body> <input id="b" type="button" value="RUN" onclick="run();"> <div id="content"></div> </body> </html> <!-- 《程式語言教學誌》的範例程式 http://pydoing.blogspot.com/ 檔名:reg01.html 功能:示範 JavaScript 程式 作者:張凱慶 時間:西元 2010 年 11 月 -->
執行結果如下
中英文術語對照 | |
---|---|
物件 | object |
正規表示式 | regular expression |
字串 | string |
字面常數 | literal |
樣式 | pattern |
修飾詞 | modifier |
屬性 | attribute |
方法 | method |
沒有留言:
張貼留言