摘要:匹配規則標準參考教程正則對象的屬性和方法屬性正則對象的屬性分成兩類。一類是修飾符相關,返回一個布爾值,表示對應的修飾符是否設置。方法正則對象的方法返回一個布爾值,表示當前模式是否能匹配參數字符串。
正則表達式
/pattern/flags new RegExp(pattern [, flags])
pattern | 正則表達式的文本 |
---|---|
flags | 如果指定,標志可以具有以下值的任意組合: |
g | 全局匹配 |
i | 忽略大小寫 |
m | 多行;讓開始和結束字符(^ 和 $)工作在多行模式工作 |
u | Unicode。把模式當作Unicode代碼點(code points)的序列。 |
y | 黏度; 在目標字符串中,只從正則表達式的lastIndex屬性指定的顯示位置開始匹配(并且不試圖從任何之后的索引匹配)。 |
//字面量 var regex = /xyz/i; //構造函數 var regex = new RegExp("xyz", "i");
這兩種寫法——字面量和構造函數——在運行時有一個細微的區別。采用字面量的寫法,正則對象在代碼載入時(即編譯時)生成;采用構造函數的方法,正則對象在代碼運行時生成。考慮到書寫的便利和直觀,實際應用中,基本上都采用字面量的寫法。
匹配規則MDN
javascript標準參考教程
ignoreCase:返回一個布爾值,表示是否設置了i修飾符,該屬性只讀。
global:返回一個布爾值,表示是否設置了g修飾符,該屬性只讀。
multiline:返回一個布爾值,表示是否設置了m修飾符,該屬性只讀。
var r = /abc/igm; r.ignoreCase // true r.global // true r.multiline // true
另一類是與修飾符無關的屬性,主要是下面兩個。
lastIndex:返回下一次開始搜索的位置。該屬性可讀寫,但是只在設置了g修飾符時有意義。
source:返回正則表達式的字符串形式(不包括反斜杠),該屬性只讀。
var r = /abc/igm; r.lastIndex // 0 r.source // "abc"
如果正則表達式帶有g修飾符,則每一次test方法都從上一次結束的位置開始向后匹配。
var r = /x/g; var s = "_x_x"; r.lastIndex // 0 r.test(s) // true r.lastIndex // 2 r.test(s) // true r.lastIndex // 4 r.test(s) // false //lastIndex屬性只對同一個正則表達式有效,所以下面這樣寫是錯誤的 var count = 0; while (/a/g.test("babaa")) count++;
exec() 正則對象的exec方法,可以返回匹配結果。如果發現匹配,就返回一個數組,成員是每一個匹配成功的子字符串,否則返回null。
如果正則表示式包含圓括號(即含有“組匹配”),則返回的數組會包括多個成員。第一個成員是整個匹配成功的結果,后面的成員就是圓括號對應的匹配成功的組。也就是說,第二個成員對應第一個括號,第三個成員對應第二個括號,以此類推。整個數組的length屬性等于組匹配的數量再加1。
var s = "_x_x"; var r = /_(x)/; r.exec(s) // ["_x", "x"]
如果正則表達式加上g修飾符,則可以使用多次exec方法,下一次搜索的位置從上一次匹配成功結束的位置開始。
//exec方法的返回數組還包含以下兩個屬性: // input:整個原字符串。 // index:整個模式匹配成功的開始位置(從0開始計數)。 var r = /a(b+)a/g; var a1 = r.exec("_abbba_aba_"); a1 // ["abbba", "bbb"] a1.index // 1 r.lastIndex // 6 var a2 = r.exec("_abbba_aba_"); a2 // ["aba", "b"] a2.index // 7 r.lastIndex // 10 var a3 = r.exec("_abbba_aba_"); a3 // null a3.index // TypeError: Cannot read property "index" of null r.lastIndex // 0 var a4 = r.exec("_abbba_aba_"); a4 // ["abbba", "bbb"] a4.index // 1 r.lastIndex // 6字符串對象的方法
字符串對象的方法之中,有4種與正則對象有關。
match():返回一個數組,成員是所有匹配的子字符串。
search():按照給定的正則表達式進行搜索,返回一個整數,表示匹配開始的位置。
replace():按照給定的正則表達式進行替換,返回替換后的字符串。
split():按照給定規則進行字符串分割,返回一個數組,包含分割后的各個成員。
//String.prototype.match() var s = "abba"; var r = /a/g; s.match(r) // ["a", "a"] r.exec(s) // ["a"]
//String.prototype.search() "_x_x".search(/x/)
//String.prototype.replace() "aaa".replace("a", "b") // "baa" "aaa".replace(/a/, "b") // "baa" "aaa".replace(/a/g, "b") // "bbb" //replace方法的第二個參數可以使用美元符號$,用來指代所替換的內容。 // $& 指代匹配的子字符串。 // $` 指代匹配結果前面的文本。 // $" 指代匹配結果后面的文本。 // $n 指代匹配成功的第n組內容,n是從1開始的自然數。 // $$ 指代美元符號$。 "hello world".replace(/(w+)s(w+)/, "$2 $1") // "world hello" "abc".replace("b", "[$`-$&-$"]") // "a[a-b-c]c" //replace方法的第二個參數還可以是一個函數,將每一個匹配內容替換為函數返回值。 "3 and 5".replace(/[0-9]+/g, function(match){ return 2 * match; }) // "6 and 10" var a = "The quick brown fox jumped over the lazy dog."; var pattern = /quick|brown|lazy/ig; a.replace(pattern, function replacer(match) { return match.toUpperCase(); }); // The QUICK BROWN fox jumped over the LAZY dog.
//String.prototype.split() // 非正則分隔 "a, b,c, d".split(",") // [ "a", " b", "c", " d" ] // 正則分隔,去除多余的空格 "a, b,c, d".split(/, */) // [ "a", "b", "c", "d" ] // 指定返回數組的最大成員 "a, b,c, d".split(/, */, 2) [ "a", "b" ] "aaa*a*".split(/(a*)/) // [ "", "aaa", "*", "a", "*" ]
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/81666.html
摘要:返回值是被找到的值。支持正則表達式的對象的方法方法檢索與正則表達式相匹配的子字符串。該數組是通過在指定的邊界處將字符串分割成子串創建的。注意報錯正確示例附表修飾符修飾符描述執行對大小寫不敏感的匹配。查找以十六進制數規定的字符。 什么是 RegExp? RegExp 是正則表達式的縮寫。 當您檢索某個文本時,可以使用一種模式來描述要檢索的內容。RegExp 就是這種模式。 簡單的模式可以...
摘要:對象對象對象表示正則表達式,它是對字符串執行模式匹配的強大工具。查找以十六進制數規定的字符。支持正則表達式的對象的方法方法描述檢索與正則表達式相匹配的值。替換與正則表達式匹配的子串。 RegExp對象 RegExp 對象 RegExp 對象表示正則表達式,它是對字符串執行模式匹配的強大工具。 直接量語法 /pattern/attributes 創建 RegExp 對象的語法 new R...
摘要:直接調用構造函數使用,一個可能含某種匹配模式的路徑字符串作為它的必選參數,它返回一個正則對象。有兩個方法返回一個正則對象,效果與調用構造函數一樣返回一個函數,該函數與下面的返回的函數功能一樣方法,同樣接收一個路徑字符串。 code in here使用path-to-regexp,我們可以在路徑字符串中使用正則。如/:foo*/:bar?、/icon-:foo(d+).png等。像exp...
摘要:返回值一個新的對象,具有指定的模式和標志。參數作用正則表達式規定匹配的類型。如果未找到匹配,則返回值為。返回值請注意,無論是否是全局模式,都會把完整的細節添加到它返回的數組中。字符串或正則表達式,從該參數指定的地方分割。 前言 PS:2018/03/27 優化文章格式,新增部分測試代碼說起正則其實大家都會經常接觸到,前端小到校驗,大到插件隨處可見,簡單的方法也能實現需求,不過缺乏靈活性...
摘要:目錄導語理解正則表達式模式的規則字符串和正則實例的屬性和方法檢索實例小結導語正則表達式是處理字符串的一門藝術手法,應用場景經常出現在表單驗證部分高級程序設計一書開篇提到,這門語言最原始的應用就是處理輸入驗證操作,所以正則表達式從誕生那一刻就 目錄 導語 1.理解正則表達式 2.模式的規則 3.字符串和正則實例的屬性和方法 4.檢索實例 5. 小結 導語 正則表達式是處理字符串的一門藝...
閱讀 2818·2023-04-25 15:01
閱讀 3050·2021-11-23 10:07
閱讀 3364·2021-10-12 10:12
閱讀 3455·2021-08-30 09:45
閱讀 2194·2021-08-20 09:36
閱讀 3586·2019-08-30 12:59
閱讀 2431·2019-08-26 13:52
閱讀 934·2019-08-26 13:24