1. 程式人生 > >JS的正則表達式簡介

JS的正則表達式簡介

數據 分享 div 正則表達 程序 image rep ron 方法

  1、JS的正則表達式

  1.1 簡介

  JS的正則表達式比較簡單,總體上只分為兩個功能:一個是test——用於匹配字符串是否符合規定的正則表達式規則;另外一個是exec——用於獲取匹配到的數據。

  1.2 test介紹

  我們利用/.../生成正則表達式的對象,例如我們想匹配包含數字0-9可以這樣定義:

rep = /\d+/

  然後調用test方法即可:

rep.test(‘abcd123vdsd345‘);

  結果為:

技術分享圖片

  註意默認情況下這個字符串只要包含數字就返回true。

  但是如果我們想匹配字符串中必須全部都包含數字,只要改一下正則表達式規則即可:

技術分享圖片

  1.3 exec介紹

  1.3.1 默認情況

  默認情況下exec僅拿匹配到的第一個值,並且將這個值存放到數組中:

rep = /\d+/;
str = ‘qwe123fds456sd666‘; rep.exec(str);

  結果如下:

技術分享圖片

  大家可以看到,不管匹配多少次,默認時僅匹配出來了123。

  1.3.2 全局匹配:/.../g

  如果利用全局匹配的話,可以像叠代器那樣講數字全部匹配出來:

rep = /\d+/g;
str = ‘qwe123fds456sd666‘;
rep.exec(str);

  結果如下:

技術分享圖片

  這裏需要註意的一點是:最後那個null是結束的標誌,如果再在null後面執行的話,程序會自動從字符串的頭重新開始匹配的 。

  1.3.3 多行匹配:/.../m

  JS正則匹配時本身就是支持多行,此處多行匹配只是影響正則表達式^和$,m模式也會使用^$來匹配換行的內容:

var pattern = /^Java\w*/gm;
var text = "JavaScript is more fun than \nJavaEE or JavaBeans!";
pattern.exec(text);

  結果如下:

技術分享圖片

  1.3.4 不區分大小寫:/.../i

pattern = /\bjava\w*\b/gi;
str = ‘JAVAScript11 javascript22 dasd‘
pattern.exec(str);

  結果如下:

技術分享圖片

  1.4 字符串中的相關方法:

obj.search(regexp)                   獲取索引位置,搜索整個字符串,返回匹配成功的第一個位置(g模式無效)
obj.match(regexp)                    獲取匹配內容,搜索整個字符串,獲取找到第一個匹配內容,如果正則是g模式找到全部
obj.replace(regexp, replacement)     替換匹配替換,正則中有g則替換所有,否則只替換第一個匹配項,
                                        $數字:匹配的第n個組內容;
                                          $&:當前匹配的內容;
                                          $`:位於匹配子串左側的文本;
                                          $‘:位於匹配子串右側的文本
                                          $$:直接量$符號

JS的正則表達式簡介