JS正規表示式 RegExp物件)

2021-08-15 22:50:42 字數 3300 閱讀 6463

regexp物件用於規定在文字中檢索的內容

什麼是regexp?

regexp是正規表示式的縮寫

當您檢索某個檔案時,您可以規定某個要檢索的模式來描述要檢索的內容。regexp就是這種模式

定義regexp:

通過new關鍵字來定義regexp物件。以下**定義了名為patt的regexp物件,其模式是e

var patt=new regexp('e');當使用這個正規表示式在字串中檢索時,將尋找的是字元『e』

regexp物件有三個方法:

1.test()  檢索字串中的指定值。返回值是true或者是false

var patt1=new regexp("e");

document.write(patt1.test("the best things in life are free"));

2.exec() 方法檢索字串中的指定值,返回值是被找到的值,如果沒找到返回null

var patt1=new regexp("e");

document.write(patt1.exec("the best things in life are free"));

regexp物件表示正規表示式,它是對字串進行模式匹配的強大工具

建立regexp物件的語法:

new  regexp(pattern,attributes)

引數parttern是字串,指定了正規表示式模式或其他正規表示式

引數attributes是乙個可選的字串,包含屬性『g』,『i』,『m』,分別用於指定全域性匹配,區分大小寫的匹配和多行匹配。ecmascript 標準化之前,不支援 m 屬性。如果 

pattern

是正規表示式,而不是字串,則必須省略該引數。

返回值乙個新的 regexp 物件,具有指定的模式和標誌。如果引數 pattern 是正規表示式而不是字串,那麼 regexp() 建構函式將用與指定的 regexp 相同的模式和標誌建立乙個新的 regexp 物件。

如果不用 new 運算子,而將 regexp() 作為函式呼叫,那麼它的行為與用 new 運算子呼叫時一樣,只是當 pattern 是正規表示式時,它只返回 pattern,而不再建立乙個新的 regexp 物件。

丟擲:syntaxerror - 如果 pattern 不是合法的正規表示式,或 attributes 含有 "g"、"i" 和 "m" 之外的字元,丟擲該異常。

typeerror - 如果 pattern 是 regexp 物件,但沒有省略 attributes 引數,丟擲該異常。

方括號:

方括號用於查詢某個範圍內的字元

表示式:

[abc]查詢方括號之間的任何字元

[^abc]查詢任何不在方括號之間的字元

[0-9]查詢任何從0到9的數字

[a-z]查詢任何從小寫a到小寫z的字元

[adgk]

查詢給定集合內的任何字元。

[^adgk]查詢給定集合外的任何字元。

(red|blue|green)

查詢任何指定的選項。

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

.查詢單個字元,除了換行和行結束符

\w查詢單詞字元

\w查詢非單詞字元

\d查詢數字

\d查詢非數字字元

\s查詢空白字元

\s查詢非空白字元

\b匹配單詞邊界

\b匹配非單詞邊界

\0查詢nul字元

\n查詢換行符

\f查詢換頁符

\r查詢回車符

\t查詢製表符

\v查詢垂直製表符

\***查詢以八進位制數 *** 規定的字元。

\xdd查詢以十六進製制數 dd 規定的字元。

\u***查詢以十六進製制數 ***規定的unicode字元。

量詞

n+匹配任何至少包含乙個n的字串

n*匹配任何包含0個或者多個n的字串

n?匹配任何包含0個或者1個n的字串

n匹配包含x個n的序列的字串

n匹配包含x至y個n的序列的字串

n匹配包含至少x個n的序列的字串

n$匹配任何結尾為n的字串

^n匹配任何開頭為n的字串

?=n匹配任何其後緊跟著指定字串n的字串

?!n匹配任何其後沒有緊接著字串n的字串

regexp物件屬性:

global:regexp物件是否具有標誌g

regexpobject.global
ignorecase:regexp物件是否具有標誌i

lastindex乙個整數,標誌著下一次開始匹配字串的位置

multilineregexp物件是否具有標誌m

不具有標誌 g 和不表示全域性模式的 regexp 物件不能使用 lastindex 屬性。

支援正規表示式string物件的方法

search() 方法用於檢索字串中指定的子字串,或檢索與正規表示式相匹配的子字串。

match() 方法可在字串內檢索指定的值,或找到乙個或多個正規表示式的匹配。

該方法類似 indexof() 和 lastindexof(),但是它返回指定的值,而不是字串的位置。

replace() 方法用於在字串中用一些字元替換另一些字元,或替換乙個與正規表示式匹配的子串

document.write(str.replace(/microsoft/, "w3school"))
split() 方法用於把乙個字串分割成字串陣列。

輸出:

how,are,you,doing,today?

h,o,w, ,a,r,e, ,y,o,u, ,d,o,i,n,g, ,t,o,d,a,y,?

how,are,you

compile() 方法用於改變 regexp。

compile() 既可以改變檢索模式,也可以新增或刪除第二個引數。

var patt1=new regexp("e");

document.write(patt1.test("the best things in life are free"));

patt1.compile("d");

document.write(patt1.test("the best things in life are free"));

js 正規表示式物件 RegExp

語法 var patt new regexp pattern,modifiers 或更簡單的方法 var patt pattern modifiers 用 來表示表示式 i 修飾符是用來執行不區分大小寫的匹配。g 修飾符是用於執行全文的搜尋 而不是在找到第乙個就停止查詢,而是找到所有的匹配 注意 當...

js物件之RegExp正規表示式

在python中如果需要使用正則 需要借助於re模組 在js自己手動建立需要的正則物件 第一種建立方法 var reg new regexp a za z a za z0 9 第二種建立方法 var reg1 a za z a za z0 9 匹配內容 關鍵字.test 返回結果為 布林值 matc...

js物件之RegExp正規表示式

在python中如果需要使用正則 需要借助於re模組 在js自己手動建立需要的正則物件 第一種建立方法 var reg new regexp a za z a za z0 9 第二種建立方法 var reg1 a za z a za z0 9 匹配內容 關鍵字.test 返回結果為 布林值 matc...