JavaScript正則表達式初級用法

JavaScript正則表達式

var str = "abc";

str = str.replace(/a|b/g,'A');

用兩個斜槓括起來的寫法是正則表達式, 就像用引號括起來是字串, 這個正則表達式的意思是把字串裏的a或b替換成大寫字母A. 後面斜槓後面的g是全局匹配的意思 如果沒有這個g, 則只替換str字串第一個匹配. 因爲符號|是或的意思, 所以如果想查找字符"|", 應該在前面加上反斜槓, 例如str.replace(/\|/g,"A")將會把str的字符"|"全部換成大寫的"A". 正則表達式有一系列的這種需要轉義的符號.


str.replace(/(a)(b)/g,"$1"), 這個正則表達式把字符串裏面的"ab"字符換成a, $1就是代表第一個匹配, 也就是第一個小括號裏的內容, 如果是str.replace(/(a)(b)/g,"$2"), 就會把"ab"替換成"b", $2表示第二個匹配, 總共有9個$匹配可以使用.


str.replace(/(a|b)/g,"\\$1"), 這個語句把字符串裏的"a"或"b", 分別替換成"\a"或"\b", 因爲反斜槓是轉義符, 所以和字串一樣, 需要加轉義. 總之小括號的位置就是$的序列號. 如果表達式裏沒有小括號, $1將會被看成"$1"字符, 而不是再代表匹配的字符.


str.replace(/(a)(b)(c))/g,function(){return "A"}), 這種寫法可以不用使用$符號就能獲得匹配的細節, 用於回調的function實際上有m+3個參數, m是正則表達式裏"()"的對數, 即使是或的關係也算數, 比如/(a)(b)|(c))/g, 這個表達式, 同樣有6個參數. 第一個參數是匹配的字串(這裏就是ab或c), 倒數第一個參數是原來的整個字串也就是str, 倒數第二個參數是匹配的首位置.剩下的m個參數是沒括號裏的子匹配, 比如/(a)(b)(c))/g, 那麼這3個參數分別是a,b,c. 而/(a)(b)|(c))/g而言, 分別是a,b,null或者,null,null,c, 看是匹配的哪個表達式. 函數的返回值是要替換的內容.


中括號可以指定一個字符範圍 比如/[a-z]/g, 那麼只要是小寫英文字母就會匹配.

大括號指定字符的重複次數 比如/a{2,9}/g,那麼連續2個到9個的a都會匹配. 可以不寫後面比如/a{2,}/g, 那麼大於等於2個的連續a都會匹配.


/a*/g等價於/a{0,}/g, /a+/g等價於/a{1,}/g, /a?/g等價於/a{0,1}/g.

/^a/g只匹配開頭.

/a$/只匹配結尾.

/[abc]/g匹配a,b,c任意一個字符. 其實就是"|"的單字符省略寫法.

/[a-zA-Z][a-zA-Z0-9_]+/g; 匹配前面是字母, 後面是字母數字或者下劃線且多於1個, 所以匹配的項至少爲2個字符, 如果+換成*子一個字母也會匹配.

/[^abc]/g, 不是a,b,c之一的, 注意此時^在中括號的裏面, 如果在外面, 表示匹配字串開頭.


/./g匹配除了換行符以外的任意字符

\d匹配數字, \D匹配非數字, 而/\d|\D/g可以匹配任意字符.


更多:http://www.cainiao8.com/web/js_note/js_regular_expression.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章