正則表達式中的轉義問題


     正則表達式是javascript學習中非常重要的一部分,它的主要作用是驗證表單。

      說到正則表達式,我們首先想到的是它的創建方式,正則表達式創建的方式有兩種:字面量形式和RegExp構造函數。

      首先說字面量形式:

      創建方法:var expression= / pattern / flags ;

      pattern(模式)部分可以是任何簡單或復雜的正則表達式,可以包含字符類、限定符、分組、向前查找以及反向引用。

      flags(標志)部分表明正則表達式的行為。其中g表示全局模式,i表示不區分大小寫模式,m表示多行模式。

      pattern中所有元字符都需要轉義,因為元字符在正則表達式中都有一種或多種特殊的用途元字符包括:( ) [ ] { } \ ^ $ | ? * . + / (”/“書中及參考資料沒有提及,個人覺得應該算) 。轉義的方式就是在元字符前加反斜杠”\“。

      例如:   

1 /*匹配字符串中所有“Web”實例*/
2 var pattern1=/Web/g;
3 /*匹配字符串中所有“Web+”實例*/
4 var pattern2=/Web\+/g;

     然后說說RegExp構造函數:

      創建方法:var expression=new RegExp("pattern","flags");

      構造函數接受兩個參數:要匹配的字符串模式、可選的標志字符串。兩個參數的數據類型都是字符串,所以不能把字面量形式中的pattern傳遞給構造函數。RegExp的pattern中所有元字符都必須雙重轉義,那些已轉義過的字符也如此。

      例如:

 1 /*匹配字符串中所有“\”實例
 2 * 考慮方式1
 3 * 1、把“\”這個內容轉化成字符串,因為單獨的“\”在字符串中代表轉義符,把它打印出來不會有任何東西,所以得到的字符串為“\\”。
 4 * 2、把得到的字符串變為正則表達式字符串,正則表達式中的首個“\”表示轉義,所以最終得到的字符串為“\\\\”。
 5 * */
 6 
 7 /*匹配字符串中所有“\”實例
 8  * 考慮方式2
 9  * 1、把“\”這個內容轉化成字面量模式的正則表達式,得到的結果為“\\”。
10  * 2、把1中的正則表達式轉化成字符串,結果為“\\\\”。
11  * */
12 
13 //以下兩行代碼在控制台執行。
14 var pattern3=new RegExp("\\\\","g");
15 alert(pattern3.test("\\"));

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM