JavaScript 快速導覽 - 內建 RegExp 物件的字面常數

基本 RegExp 物件 (object) 的字面常數 (literal) 格式如下

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非英文單字開頭
\0NULL 字元
\n新行符號
\f換頁符號
\r輸入鍵符號
\t水平
\v垂直 tab 符號
\000八進位數字
\x00十六進位數字
\u0000Unicode 字元


量詞標記在字元之後,表示數量
+表示 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


內建物件




沒有留言: