Javascript正則表達式詳解(一)

簡介

先來一段介紹:javascript

正則表達式,又稱正規表示法、常規表示法(英語:Regular Expression,在代碼中常簡寫爲regex、regexp或RE),計算機科學的一個概念。正則表達式使用單個字符串來描述、匹配一系列符合某個句法規則的字符串。在不少文本編輯器裏,正則表達式一般被用來檢索、替換那些符合某個模式的文本。java

簡單說就是:正則表達式

它是對字符串執行模式匹配的強大工具。segmentfault

Javascript中的正則表達式相較於其餘語言來講實現的並不完整,但仍然是十分強大的,可以幫助咱們完成絕大多數模式匹配任務。下面將一步一步詳細介紹。編輯器

定義

在Javascript中,定義一個正則表達式有兩種方式,一種是直接量,另外一種是使用構造函數。函數

直接量

Javascript可使用相似Perl的語法定義一個正則表達式工具

var r = /pattern/flags;

其中pattern是任何簡單或複雜的正則表達式,flags是用以表達正則表達式行爲的一個或者多個標識。code

flags

  • g 表示全局(global)模式,即模式將被應用於全部字符串
  • i 表示不區分大小寫
  • m 多行模式

來看幾個例子regexp

var r1 = /at/g; // 匹配字符串中全部'at'的實例

var r2 = /.ho/gi; // 匹配以'ho'結尾的三個字符的組合,不區分大小寫

使用構造函數

Javascript中正則表達式的構造函數爲RegExp,即Regular Expression的縮寫,它接收兩個參數,第一個爲要匹配的字符串模式,另外一個是可選的標識位。blog

如:

var r = new RegExp('hello', 'g'); // 匹配字符串中全部的'hello'實例

有一點必定要注意,第一個參數是一個字符串,而不是正則表達式的直接量。

元字符

在正則表達式的模式中,有一些字符是有特殊含義的,被稱爲元字符,若是要匹配元字符,則必須對其進行轉義。

這些元字符分別是:

( [ { \ ^ $ | ) ? * + . ] }

例如:

// 若是要匹配'/user/name'這個字符串,正則表達式須要這樣
var r1 = /\/user\/name/;

var r2 = /\.ho/; // 匹配'.ho'這個字符串

關於使用構造函數定義

若是使用構造函數定義正則表達式,因爲構造函數的第一個參數必須是一個字符串,在匹配元字符時,這將會致使雙重轉義。

例如:

var r1 = new RegExp('\/user', 'g'); // wrong

// 因爲\在字符串中須要轉義爲\\,因此,若是要匹配/user,正則表達式須要寫爲
var r1 = new RegExp('\\/user', 'g');

全部元字符都須要進行雙重轉義

另外,還有一些預約義的特殊字符也被稱爲元字符

元字符 描述
. 查找單個字符,除了換行和行結束符。
\w 查找單詞字符。
\W 查找非單詞字符。
\d 查找數字。
\D 查找非數字字符。
\s 查找空白字符。
\S 查找非空白字符。
\b 匹配單詞邊界。
\B 匹配非單詞邊界。
\0 查找 NUL 字符。
\n 查找換行符。
\f 查找換頁符。
\r 查找回車符。
\t 查找製表符。
\v 查找垂直製表符。
\xxx 查找以八進制數 xxx 規定的字符。
\xdd 查找以十六進制數 dd 規定的字符。
\uxxxx 查找以十六進制數 xxxx 規定的 Unicode 字符。

有一點須要特別注意:無論一個元字符表明多少種含義,單個元字符始終只匹配單個字符

元字符其實沒必要刻意花時間去記憶,等了解了所有的正則表達式使用方法以後,天然就知道哪些字符是有特殊含義的,也就知道了哪些時候須要轉義了。

下面將陸續介紹正則表達式的使用方法。

Javascript正則表達式詳解(二)

相關文章
相關標籤/搜索