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 |
沒有留言:
張貼留言