var patt = /pattern/modifiers;
pattern 即是正規表示式 (regular expression) 的樣式 (pattern) ,modifiers 則是修飾詞 (modifier) ,屬於額外的標記符號,,有 i 及 g 兩個, i 表示區分大小寫, g 則表示範圍為全域。因此 RegExp 物件可以是下面四者之一
var patt1 = /pattern/; var patt2 = /pattern/i; var patt3 = /pattern/g; var patt3 = /pattern/ig;
樣式可由幾個部份組成,分別是括弧 (bracket) 、中介字元 (metacharacter) 及量詞 (quantifier) ,以下是具有功能的標記符號
^ $ \ . * + ? ! | - ( ) [ ] { }括弧使用小括弧、中括弧及大括弧,小括弧用於子樣式,大括弧用於量詞,中括弧可指定特定範圍的字元,例如
| [aeiou] | a 、 e 、 i 、 o 、 u 中任一字元 |
| [^aeiou] | a 、 e 、 i 、 o 、 u 以外的任一字元 |
| [0-9] | 0 到 9 的數字 |
| [a-z] | 所有小寫英文字母 |
| [A-Z] | 所有大寫英文字母 |
| [A-z] | 所有英文字母,無論大小寫 |
| (a | e | i | o | u) | | 為或的意思,此為 a 、 e 、 i 、 o 、 u 中任一字元 |
中介字元都是單一字元,除了小數點符號外,均以反斜線開始如下
| . | 任何字元,除了新行或結束符號 |
| \w | 任何文字字元 |
| \W | 任何非文字字元 |
| \d | 任何數字 |
| \D | 任何非數字 |
| \s | 任何空白字元 |
| \S | 任何非空白字元 |
| \b | 英文單字開頭 |
| \B | 非英文單字開頭 |
| \0 | NULL 字元 |
| \n | 新行符號 |
| \f | 換頁符號 |
| \r | 輸入鍵符號 |
| \t | 水平 |
| \v | 垂直 tab 符號 |
| \000 | 八進位數字 |
| \x00 | 十六進位數字 |
| \u0000 | Unicode 字元 |
量詞標記在字元之後,表示數量
| + | 表示 1 到無數個 |
| * | 表示 0 到無數個 |
| ? | 表示 0 或 1 個 |
| {1} | 表示 1 個 |
| {1, 2} | 表示 1 到 2 個 |
| {1,} | 表示 1 到無數個 |
另有兩個開頭與結尾的指定符號
| $ | 若出現在字串結尾,表示其字元必須是字串結尾的字元 |
| ^ | 若出現在字串開頭,表示其字元必須是字串開頭的字元 |
舉例示範如下
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 t1test = /[A-Z]\w* \d*:\d*/;
var t1 = t1test.test(stest1);
var t2 = t1test.test(stest2);
var t3test = /.\w* \d*:\d*/;
var t3 = t3test.test(stest1);
var t4 = t3test.test(stest2);
var t5test = /(A|E|I|O|U)\w* \d*:\d*/
var t5 = t5test.test(stest1);
var t6 = t5test.test(stest2);
var t7test = /\w* [0-9]:[0-9]/
var t7 = t7test.test(stest1);
var t8 = t7test.test(stest2);
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/
檔名:reg02.js
功能:示範 JavaScript 程式
作者:張凱慶
時間:西元 2010 年 11 月 */利用以下的 HTML 文件開啟
<html>
<head>
<title>JavaScript Demo</title>
<script src="reg02.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/
檔名:reg02.html
功能:示範 JavaScript 程式
作者:張凱慶
時間:西元 2010 年 11 月 -->執行結果如下

| 中英文術語對照 | |
|---|---|
| 物件 | object |
| 字面常數 | literal |
| 正規表示式 | regular expression |
| 樣式 | pattern |
| 修飾詞 | modifier |
| 括弧 | bracket |
| 中介字元 | metacharacter |
| 量詞 | quantifier |
沒有留言:
張貼留言