1. 程式人生 > >正則表示式筆記之四

正則表示式筆記之四

在JavaScript中的每個正則表示式都是一個物件。這些物件有下面的一些屬性。

1, 例項屬性:RegExp的例項有一些開發人員可以使用的屬性。

      global - Boolean值,表示g(全域性選項)是否設定

      ignoreCase - Boolean值,表示i(忽略大小寫選項)是否設定

      lastIndex - 整數,代表下次匹配將會從哪個字元位置開始(只有當使用exec()或test()函式才會填入,否則為0

      multiline - Boolean值,表示m(多行模式選項)是否設定

      source - 正則表示式的源字串形式。例如表示式/[ba]*/的source將返回"[ba]*"

      在這些屬性中,真正有用的是lastIndex,它可以告訴你正則表示式在某個字串中停止之前,查詢樂多元:

      var sToMatch = "bbq is short for barbecue";

      var regB = /b/g;

      regB.exec(sToMatch);

      alert(regB.lastIndex);              // output "1";

      regB.exec(sToMatch);

      alert(regB.lastIndex);              // output "2";

      regB.exec(sToMatch);

      alert(regB.lastIndex);              // output "18";

      regB.exec(sToMatch);

      alert(regB.lastIndex);              // output "21";

      如果想從頭開始匹配,可以將lastIndex設為0.

2, 靜態屬性: 靜態屬性對所有的正則表示式都有效。這些屬性都有兩個名字: 一個複雜名字和一個以$開頭的簡短名字,如下:

       長名                          短名                            描述

       input                        $_                         最後用於匹配的字串(傳遞給exec()或test()的字串)

       lastMatch                 $&                         最後匹配的字元

       lastParen                 $+                         最後匹配的分組

       leftContext               $`                         在上次匹配的前面的子串

       multiline                   $*                          用於指定是否所有的表示式都使用多行模式的選項

       rightContext             $'                          在上次匹配之後的子串

       這些屬性可以告訴你,關於剛使用的exec()或test()完成的匹配的一些特定資訊。如:

       var sToMatch = "this has been a short, short summer";

       var regShort = /(s)hort)/g;

       regShort.test(sToMatch);

       alert(RegExp.input);                // output "this has been a short, short summer"

       alert(RegExp.leftContext);      // output "this has been a "

       alert(RegExp.rightContext);    // output ", short summer"

       alert(RegExp.lastMatch);         // output "short";

       alert(RegExp.lastParen);         // output "s"

       記住,每次執行exec()或test()時,所有的屬性(除multiline)都會被重新設定。