對於轉義字符的概念,我們在JavaScript入門教程中的“JavaScript特殊數據類型”這一節已經有過詳細的介紹。
但是正則表達式本身有它的一套轉義字符。正則表達式中的轉義字符跟JavaScript中的轉義字符是不一樣的,僅僅是概念理解一樣,大家要區分一下。
我們都知道正則表達式包括2種字符:(1)普通字符;(2)特殊字符。如果我們要匹配正則表達式中的特殊字符,我們就必須在該特殊字符前面加上反斜槓“\”將其進行轉義。
例如我們要匹配“go+”這個字符(這裡說的是字符),那正則表達式怎麼寫呢?很多初學者會寫成下面這種形式:
go+
根據前面學習的“正則表達式限定符”我們知道,上面的正則表達式使用了+限定符,因此字母o必須出現1次或者更多次。所以匹配上面正則表達式的字符串有go、good、god等。但是我們只想匹配“go+”這3個字符!
正常寫法如下:
go\+
分析:
因為+是正則表達式的特殊符號,因此必須在+前面加上“\”對其進行轉義。
例如要匹配字面意義的“\”,就需要使用“\\”表示。
需要轉義的字符有:$、(、)、*、+、.、[、]、?、\、/、^、{、}、|。這些字符都不需要記憶,見得多就自然而然記住了。
舉例:
在線測試<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title></title> <script type="text/javascript"> var str1="510632"; var str2="lvyestudy"; var myregex = new RegExp("\\d{6}"); if(myregex.test(str1)) { document.write("'510632'是正確的郵政編碼"+"<br/>"); } else { document.write("'510632'不是正確的郵政編碼"+"<br/>"); } if(myregex.test(str2)) { document.write("'lvyestudy'是正確的郵政編碼"); } else { document.write("'lvyestudy'不是正確的郵政編碼"); } </script> </head> <body> </body> </html>
在浏覽器預覽效果如下:
分析:
var myregex = new RegExp("\\d{6}");
對於上面正則表達式的定義,很多初學者會有疑問,為什麼是“\\d{6}”而不是“\d{6}”?其實使用new關鍵字定義正則表達式,RegExp對象是一個字符串,因此這裡必須使用JavaScript的轉義字符(不同於正則表達式轉義字符)。大家仔細琢磨琢磨哈。
var myregex = /\d{6}/