JavaScript正則表達式

定義

正則表達式(英語:Regular Expression,在代碼中常簡寫爲regex、regexp或RE)使用單個字符串來描述、匹配一系列符合某個句法規則的字符串搜索模式。

搜索模式可用於文本搜索和文本替換。

什麼是正則表達式?

正則表達式是由一個字符序列形成的搜索模式。

當你在文本中搜索數據時,你可以用搜索模式來描述你要查詢的內容。

正則表達式可以是一個簡單的字符,或一個更復雜的模式。

正則表達式可用於所有文本搜索和文本替換的操作。

語法

/正則表達式主體/修飾符(可選)

其中修飾符是可選的。

示例:

var patt = /runoob/i

使用字符串方法

在 JavaScript 中,正則表達式通常用於兩個字符串方法 : search() 和 replace()。

search() 方法 用於檢索字符串中指定的子字符串,或檢索與正則表達式相匹配的子字符串,並返回子串的起始位置。

replace() 方法 用於在字符串中用一些字符替換另一些字符,或替換一個與正則表達式匹配的子串。

search() 方法使用正則表達式

使用正則表達式搜索 “Runoob” 字符串,且不區分大小寫:

var str = "Visit Runoob!"; 
var n = str.search(/Runoob/i);
6

search() 方法使用字符串

search 方法可使用字符串作爲參數。字符串參數會轉換爲正則表達式:

var str = "Visit Runoob!"; 
var n = str.search("Runoob");

replace() 方法使用字符串

replace() 方法將接收字符串作爲參數:

var str = document.getElementById("demo").innerHTML; 
var txt = str.replace("Microsoft","Runoob");

replace()中的$

(x) 匹配x保存x在名爲$1…$9的變量中 ,而$1-9則是用來指代這些變量。

示例:

//下面的例子用來獲取url的兩個參數,並返回urlRewrite之前的真實Url
var reg=new RegExp("(http://www.qidian.com/BookReader/)(\\d+),(\\d+).aspx","gmi");
var url="http://www.qidian.com/BookReader/1017141,20361055.aspx";

var rep=url.replace(reg,"$1ShowBook.aspx?bookId=$2&chapterId=$3");
console.log(rep);

正則表達式修飾符

修飾符 可以在全局搜索中不區分大小寫:

修飾符 描述
i 執行對大小寫不敏感的匹配。
g 執行全局匹配(查找所有匹配而非在找到第一個匹配後停止)。
m 執行多行匹配。

如何要使用多種模式,則    /正則表達式主體/ig     之類的即可。

正則表達式模式

方括號用於查找某個範圍內的字符:

表達式 描述
[abc] 查找方括號之間的任何字符。
[0-9] 查找任何從 0 至 9 的數字。
(x|y) 查找任何以 | 分隔的選項。

元字符是擁有特殊含義的字符:

元字符 描述
\d 查找數字。
\s 查找空白字符。
\b 匹配單詞邊界。
\uxxxx 查找以十六進制數 xxxx 規定的 Unicode 字符。
\f 匹配換頁符,等價於 \x0c 和 \cL
\n 匹配換行符 ,等價於 \x0a 和 \cJ
\r 匹配回車,等價於 \x0d 和 \cM
\S 表示非空格字符 ,等價於 [^ \f\n\r\t\v]
\t 匹配一個製表符。等價於 \x09 和 \cI
\v 匹配一個垂直製表符。等價於 \x0b 和 \cK。
\w 表示單詞字符,等同於字符集合[a-zA-Z0-9_]
\W 匹配非字母、數字、下劃線。等價於 [^A-Za-z0-9_]。
$ 表示前面的字符必須出現在末尾
^ 表示後面出現的字符必須在開頭

量詞:

量詞 描述
n+ 匹配任何包含至少一個 n 的字符串。
n* 匹配任何包含零個或多個 n 的字符串。
n? 匹配任何包含零個或一個 n 的字符串。

使用 RegExp 對象

在 JavaScript 中,RegExp 對象是一個預定義了屬性和方法的正則表達式對象。

使用 test()

test() 方法是一個正則表達式方法。

test() 方法用於檢測一個字符串是否匹配某個模式,如果字符串中含有匹配的文本,則返回 true,否則返回 false。

以下實例用於搜索字符串中的字符 “e”:

var patt = /e/;
patt.test("The best things in life are free!");
true

你可以不用設置正則表達式的變量,以上兩行代碼可以合併爲一行:

/e/.test("The best things in life are free!")

使用 exec()

exec() 方法是一個正則表達式方法。

exec() 方法用於檢索字符串中的正則表達式的匹配。

該函數返回一個數組,其中存放匹配的結果。如果未找到匹配,則返回值爲 null。

以下實例用於搜索字符串中的字母 “e”:

/e/.exec("The best things in life are free!");

字符串中含有 “e”,所以該實例輸出爲:

e

from:菜鳥教程

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章