正則RegExp

1.正則中的特殊字符
\ 作爲轉意,即一般在"\"後面的字符不按原來意義解釋,如/b/匹配字符"b",當b前面加了反斜杆後/\b/,轉意爲匹配一個單詞的邊界。 
-或- 
對正則表達式功能字符的還原,如"*"匹配它前面元字符0次或屢次,/a*/將匹配a,aa,aaa,加了"\"後,/a\*/將只匹配"a*"。 

^ 匹配一個輸入或一行的開頭,/^a/匹配"an A",而不匹配"An a" 
$ 匹配一個輸入或一行的結尾,/a$/匹配"An a",而不匹配"an A" 
* 匹配前面元字符0次或屢次,/ba*/將匹配b,ba,baa,baaa 
+ 匹配前面元字符1次或屢次,/ba*/將匹配ba,baa,baaa 
? 匹配前面元字符0次或1次,/ba*/將匹配b,ba 
(x) 匹配x保存x在名爲$1...$9的變量中 
x|y 匹配x或y 
{n} 精確匹配n次 
{n,} 匹配n次以上 
{n,m} 匹配n-m次 
[xyz] 字符集(character set),匹配這個集合中的任一一個字符(或元字符) 
[^xyz] 不匹配這個集合中的任何一個字符 
[\b] 匹配一個退格符 
\b 匹配一個單詞的邊界 
\B 匹配一個單詞的非邊界 
\cX 這兒,X是一個控制符,/\cM/匹配Ctrl-M 
\d 匹配一個字數字符,/\d/ = /[0-9]/ 
\D 匹配一個非字數字符,/\D/ = /[^0-9]/ 
\n 匹配一個換行符 
\r 匹配一個回車符 
\s 匹配一個空白字符,包括\n,\r,\f,\t,\v等 
\S 匹配一個非空白字符,等於/[^\n\f\r\t\v]/ 
\t 匹配一個製表符 
\v 匹配一個重直製表符 
\w 匹配一個能夠組成單詞的字符(alphanumeric,這是個人意譯,含數字),包括下劃線,如[\w]匹配"$5.98"中的5,等於[a-zA-Z0-9] 
\W 匹配一個不能夠組成單詞的字符,如[\W]匹配"$5.98"中的$,等於[^a-zA-Z0-9]。
\ f 換頁符 
\ n 換行符 
\ r 回車 
\ t 製表符 

i 執行大小寫不敏感的匹配 
g 執行一個全局的匹配,簡而言之,就是找到全部的匹配,而不是在找到第一個以後就中止了

                   *:除屬性 g 和 i 以外,正則表達式就沒有其它像屬性同樣的特性了.若是將構造函數 RegExp 的靜態屬性 multiline 設置爲 true ,那麼模式匹配將以多行的模式進行.                       在這種模式下,錨字符 ^ 和 $ 匹配的不僅是檢索字符串的開頭和結尾,還匹配檢索字符串內部的一行的開頭和結尾.例如: 模式 /Java$/ 匹配的是 "Java",可是並不                         匹配正則表達式

                       "Java\nis fun" .若是咱們設置了 multiline 屬性,那麼後者也將被匹配:express

                        RegExp.multiline = true;數組

     [a-z] //匹配全部的小寫字母 
     [A-Z] //匹配全部的大寫字母 
     [a-zA-Z] //匹配全部的字母 
     [0-9] //匹配全部的數字 
[0-9\.\-] //匹配全部的數字,句號和減號 [ \f\r\t\n] //匹配全部的白字符


^表示字符串的開頭,但它還有另一個含義。當在一組方括號裏使用^是,它表示"非"或"排除"的意思,經常用來剔除某個字符。

2.定義正則表達式的方法
var reg=//
var reg=new RegExp()


3.正則表達式對象的方法
 compile 正則表達式比較 
exec 執行查找 
test 進行匹配 
toSource 返回特定對象的定義(literal representing),其值可用來建立一個新的對象。重載Object.toSource方法獲得的。 
toString 返回特定對象的串。重載Object.toString方法獲得的。 
valueOf 返回特定對象的原始值。重載Object.valueOf方法獲得 

4.exec方法:

若是 exec 方法沒有找到匹配,將返回 null若是找到匹配項,則 exec 方法返回一個數組,並將更新全局 RegExp 對象的屬性以反映匹配結果。數組元素 0 包含了完整的匹配項,而元素 1 到 n 包含的是匹配項中出現的任意一個子匹配項。這至關於沒有設置全局標誌 (g) 的 match 方法的行爲。ide

若是爲正則表達式設置了全局標誌,則 exec 從 lastIndex 值指示的位置開始搜索字符串。若是沒有設置全局標誌,則 exec 忽略 lastIndex 的值,從字符串的起始位置開始搜索。函數

exec 方法返回的數組有三個屬性:inputindex 和 lastIndexinput 屬性包含整個被搜索的字符串。 index 屬性包含了在整個被搜索字符串中匹配的子字符串的位置。 lastIndex 屬性中包含了匹配中最後一個字符的下一個位置。ui

eg:spa

var objStr="個人手機號13522222222,他的手機號13288888888,她的手機號碼13699999999";3d

var reg=/13(\d)(\d{8})/g;code

var arr=reg.exec(objStr);對象

console.log(arr);

=======>結果:

          Array[3]

    1. 0:"13522222222"//存儲匹配到的字符串
    2. 1:"5"//第一組匹配到的字符串
    3. 2:"22222222"//第二組匹配到的字符串
    4. index:5
    5. input:"個人手機號13522222222,他的手機號13288888888,她的手機號碼13699999999"
    6. length:3
5.利用正則封裝模板替換代碼
/*  抽取爲一個方法
    爲了 替換 模板中的 {name}這類文字
    參數1:使用模板 既挖好坑的 字符串 {name} 這樣的
    參數2:對象
 */
function my_template(templateString, obj) {
    // 定義正則
    var reg = /{(\w+)}/;

    // 查找並替換 須要經過循環的方式 去肯定次數
    var result;
    // 這裏只寫了一個=號 會先將括號中的 代碼執行掉 判斷正則驗證完畢以後的結果 若是爲null 跳出
    while (result = reg.exec(templateString)) {
        // 進行替換  0:{name}  1:name
        // 從結果中獲取 替換的文本 以及 屬性的名字
        var replaceString = result[0];
        var key = result[1];

        // 替換咱們傳入的 這個 模板字符串
        templateString = templateString.replace(replaceString, obj[key]);
    }

    // 若是可以執行到這裏 說明 替換完畢了
    // console.log(templateString);

    // 放心大膽的 return
    return templateString;
}
相關文章
相關標籤/搜索