摘要:反向引用當一個正則表達式被分組之后,每一個組將自動被賦予一個組號,該組號可以代表該組的表達式。對象方法接受一個字符串參數,如果正則表達式與指定的字符串匹配返回否則返回同樣接受一個字符串為參數,返回一個數組,其中存放匹配的結果。
創建方式
字面量創建方式
var reg = /pattern/flags;
實例創建方式
var reg = new RegExp(pattern, flags);
字面量創建方式和構造函數創建方式的區別:
1.字面量創建方式不能進行字符串拼接,實例創建方式可以
var regParam = "cm"; var reg1 = new RegExp(regParam+"1"); var reg2 = /regParam/; console.log(reg1); // /cm1/ console.log(reg2); // /regParam/
2.字面量創建方式特殊含義的字符不需要轉義,實例創建方式需要轉義
var reg1 = new RegExp("d"); // /d/ var reg2 = new RegExp("d") // /d/ var reg3 = /d/; // /d/修飾符
i ignoreCase 忽略大小寫 g global 全局匹配 m multiline 多行匹配
RegExp 對象屬性:
let reg = /abc/igm; reg.global //true reg.ignoreCase //true reg.multiline //true元字符 位置元字符
^ 匹配字符串的開始 $ 匹配字符串的結束 匹配單詞的開始或結束 B 匹配非單詞邊界 G 上一個匹配的結尾(本次匹配開始) A 字符串開頭(類似^,但不受處理多行選項的影響) 字符串結尾或行尾(不受處理多行選項的影響) z 字符串結尾(類似$,但不受處理多行選項的影響)基本元字符
在非特殊字符之前的反斜杠表示下一個字符是特殊的 | 邏輯或操作符 [] 定義一個字符集合,匹配字符集合中的一個字符,在字符集合里面像 .,這些字符都表示其本身 [^] 對上面一個集合取非 - 定義一個區間,例如[A-Z],其首尾字符在 ASCII 字符集里面 () 分組,將相關的元素歸攏,構成單個元素;多選結構,(...|...),規定可能出現的多個子表達式;引用分組,存儲子表達式匹配文本,供之后引用。特殊元字符
. 匹配除了換行符之外的任何單個字符 d 0~9任意一個數字 D 非0~9之間的任意字符 w 匹配包括下劃線的任何單詞字符 W 匹配任何非單詞字符 S 非空字符 s 不可見字符,如空格、回車、制表符
a|b a或者b任意一個 [abc] a或b或c任意一個 [^abc] 除了ac之外的 [a-z] 表示a到z中任意一個字母 [0-9]等價于d [^a-z]量詞
* 重復零次或更多次 + 重復一次或更多次 ? 重復零次或一次 {n} 重復n次 {n,} 重復n次或更多次 {n,m} 重復n到m次字符類
Tab 換行符 回車符 f 換頁符 e Escape貪婪與非貪婪模式
貪婪匹配: 正則表達式一般趨向于最大長度匹配,也就是所謂的貪婪匹配
非貪婪匹配:就是匹配到結果就好,最少的匹配字符
默認是貪婪模式;在量詞后面直接加上一個問號?就是非貪婪模式。反向引用
當一個正則表達式被分組之后,每一個組將自動被賦予一個組號,該組號可以代表該組的表達式。其中組號的編制規則為:從左到右、以分組的左括號“(”為標識,第一個分組的組號為1,第二個分組的組號為2,依此類推。
“ umber”中的number就是組號 regex=(abc)d1可以匹配字符串abcdabc,即1表示把獲取到的第一組再匹配一次,如下: let regg = /(abc)d1/; "abcabcdbc".match(regg); //["abcdabc", "abc", index: 3, input: "abcabcdabc", groups: undefined]預搜索(零寬斷言)
預搜索,又叫零寬斷言,又叫環視,它是對位置的匹配,與定位字符(邊界字符)類似。
(?=pattern) 斷言此位置的后面能匹配表達式pattern (?<=pattern) 斷言此位置的前面能匹配表達式pattern (?!pattern) 斷言此位置的后面不能匹配表達式pattern (? RegExp 對象屬性lastIndex 一個整數,標示開始下一次匹配的字符位置。 source 正則表達式的源文本。RegExp 對象方法 testtest接受一個字符串參數,如果正則表達式與指定的字符串匹配返回 true 否則返回 false
let reg = /^Hello/ reg.test("Hello World") // => true reg.test("Say Hello") // => falseexecexec同樣接受一個字符串為參數,返回一個數組,其中存放匹配的結果。如果未找到匹配,則返回值為 null。
let reg = /([a-z])d+/ let str = "a233" let result = reg.exec(str) // ["a233", "a", index: 0, input: "a233"] // 0:"a233" 表示我們捕獲到的字符串 // 1:"a" 表示我們捕獲到的分組字符串 // index:0 表示捕獲開始位置的索引 // input 表示原有的字符串
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/100650.html
摘要:函數式編程前端掘金引言面向對象編程一直以來都是中的主導范式。函數式編程是一種強調減少對程序外部狀態產生改變的方式。 JavaScript 函數式編程 - 前端 - 掘金引言 面向對象編程一直以來都是JavaScript中的主導范式。JavaScript作為一門多范式編程語言,然而,近幾年,函數式編程越來越多得受到開發者的青睞。函數式編程是一種強調減少對程序外部狀態產生改變的方式。因此,...
閱讀 2336·2021-11-23 09:51
閱讀 1137·2021-11-22 13:52
閱讀 3611·2021-11-10 11:35
閱讀 1187·2021-10-25 09:47
閱讀 2994·2021-09-07 09:58
閱讀 1059·2019-08-30 15:54
閱讀 2817·2019-08-29 14:21
閱讀 3025·2019-08-29 12:20