摘要:正則表達(dá)式基礎(chǔ)入門字符類,如為匹配任何字符組成的字符重復(fù)如為匹配一到三個(gè)單詞選擇分組和引用指定匹配位置修飾符直接量字符可用于模式匹配的方法對(duì)象基本要素字符類方括號(hào)內(nèi)的任意字符不在方括號(hào)內(nèi)的任意字符除換行符和其他行終止符之外的任意字符任何字
JavaScript正則表達(dá)式-基礎(chǔ)入門
字符類,如 /w/ 為匹配任何ASCII字符組成的字符
重復(fù), 如 /w{1,3}/ 為匹配一到三個(gè)單詞
選擇、分組和引用
指定匹配位置
修飾符
直接量字符
可用于模式匹配的String方法
RegExp對(duì)象
基本要素 字符類[...] | 方括號(hào)內(nèi)的任意字符 |
1 | 不在方括號(hào)內(nèi)的任意字符 |
. | 除換行符和其他Unicode行終止符之外的任意字符 |
w | 任何ASCII字符組成的單詞,等價(jià)于[a-zA-Z0-9] |
W | 任何不適ASCII字符組成的單詞,等價(jià)于2 |
s | 任何Unicode空白符 |
S | 任何非Unicode空白符的字符,注意w和S不同 |
d | 任何ASCII數(shù)字,等價(jià)于[0-9] |
D | 除了ASCII數(shù)字之外的任何字符,等價(jià)于3 |
[] | 退格直接量(特例) |
// 匹配字符串中的 "b" "abc".search( /[b]/ ) // 1 // 匹配字符串中的 方括號(hào)內(nèi)規(guī)定的數(shù)字 "abc123abc".search( /[2-5]/ ) // 4重復(fù)
{n,m} | 匹配前一項(xiàng)至少n次,但不能超過m次 |
{n, } | 匹配前一項(xiàng)n次或者更多次 |
{n} | 匹配前一項(xiàng)n次 |
? | 盡可能多地匹配前一項(xiàng)0或者1次 |
+ | 盡可能多地匹配前一項(xiàng)1次或多次 |
* | 盡可能多地匹配前一項(xiàng)0或多次 |
{n,m}? | 盡可能少地匹配前一項(xiàng)至少n次,但不能超過m次 |
?? | 盡可能少地匹配前一項(xiàng)0或者1次 |
+? | 盡可能少地匹配前一項(xiàng)1次或多次 |
*? | 盡可能少地匹配前一項(xiàng)0或多次 |
// 匹配2~4個(gè)數(shù)字,{n,m}中的逗號(hào)兩邊不能有空格 "a1ab12abc123".search( /d{2,4}/ ) // 4 // 精確匹配三個(gè)字母和一個(gè)可選的數(shù)字 "at12a3abcd1abc123".search( /[a-zA-Z]{3}d?/ ) // 6 // 匹配前后帶有一個(gè)或多個(gè)空格的字符串"JavaScript" "JavaScripttttt is notJavaScript( JavaScript )".search( /s+JavaScripts+/ ); // 32 // 盡可能多 "aaa".match( /a+/ ); // ["aaa"] // 盡可能少 "aaa".match( /a+?/ ); // ["a"]選擇
字符 "|" 用于提供可選擇的字符
注意兩點(diǎn):
1. 匹配次序 從左到右 2. 如果左邊的選擇匹配成功,就忽略右邊的匹配項(xiàng)
// 匹配三個(gè)數(shù)字或者是4個(gè)小寫字母 "1ab12ab123abcd".match( /d{3}|[a-z]{4}/ ) // ["123"]分組和引用
(...)有三個(gè)作用:
1. 把多帶帶的項(xiàng)組合成子表達(dá)式 2. 在完成的模式中定義子模式 3. 允許在同一正則表達(dá)式的后部引用前面的子表達(dá)式 , 使用1代表第一個(gè)左括號(hào)的內(nèi)容,2代表第二個(gè)左括號(hào)的內(nèi)容,依次類推
// 1.匹配字符串"Java",其后的"Script"可有可無(wú) "JavaSScript".match( /Java(Script)?/ ) // ["Java", undefined] // 2.匹配左右為字母中間為數(shù)字的字符串,同時(shí)取出中間的字符串 "123abc454cba321".match( /[a-z]+(d+)[a-z]+/ ) // ["abc454cba", "454"] // 3.允許在同一正則表達(dá)式的后面引用前面的子表達(dá)式 ""Java"S"cript"".match( /[""][^""]*[""]/ ); // [""Java""] 引號(hào)左右不匹配 ""Java"S"cript"".match( /([""])[^""]*1/ ); // [""S"", """] 引號(hào)左右匹配
(...) | 將幾個(gè)項(xiàng)組合為一個(gè)單元,這個(gè)單元可通過"*"、"+"、"?"和"|"等符號(hào)加以修飾 |
(?:...) | 只組合,把項(xiàng)目組合到一個(gè)單元,但不記憶與該組相匹配的字符 |
n | 和第n個(gè)分組第一次匹配的字符相匹配,組是圓括號(hào)中的子表達(dá)式,組索引是從左到右的左括號(hào)數(shù) |
^ | 匹配字符串的開頭,在多行檢索中,匹配一行的開頭 |
$ | 匹配字符串的借位,在多行檢索中,匹配一行的結(jié)尾 |
b | 匹配一個(gè)單詞的邊界(區(qū)分[b]匹配的是退格符) |
B | 匹配非單詞邊界的位置 |
(?=p) | 零寬正向先行斷言,要求接下來的字符都與p匹配,但不能包括匹配p的那些字符 |
(?!p) | 零寬負(fù)向先行斷言,要求接下來的字符不與p匹配 |
b、^ 和 $ 稱為正則表達(dá)式的錨,定位搜索字符串的特定位置
// 匹配單詞的邊界,即位于w字符和W之間的邊界 "htmlhtml html".search( /html/ ) // 0 "htmlhtml html".search( /html/ ) // 4 // 匹配一個(gè)單詞 " JavaScript".match( /^JavaScript$/ ) // null "JavaScript".match( /^JavaScript$/ ) // ["JavaScript"]
(?=p)和(?!p)指定接下來的字符是否與p匹配
// 第二個(gè)不能匹配是因?yàn)镴ava后面不是空格符 "JavaScript is good.".match( /[Jj]ava(Script)?(?=s)/ ) // ["JavaScript", "Script"] "Javais good.".match( /[Jj]ava(Script)?(?=s)/ ) // null修飾符
i | 執(zhí)行不區(qū)分大小寫的匹配 |
g | 執(zhí)行一個(gè)全局匹配 |
m | 多行匹配模式,^匹配一行的開頭和字符串的開頭,$匹配行的結(jié)束和字符串的結(jié)束 |
修飾符用在“/”符號(hào)之后
// i 即為igonre case "JAVASCRIPT".match( /javascript/ ) // null "JAVASCRIPT".match( /javascript/i ) // ["JAVASCRIPT"] // g 即為global "JavaScript Java".match( /Java/ ) // ["Java"] "JavaScript Java".match( /Java/g ) // ["Java", "Java"] // m 即為multiline "JavaScript Java".match( /^Java$/ ) // null "JavaScript Java".match( /^Java$/m ) // ["Java"]直接量符號(hào)
o | NUL字符(u0000) |
制表符(u0009) | |
換行符(u00A) | |
v | 垂直制表符(u000B) |
f | 換頁(yè)符(u000C) |
回車符(u000D) | |
xnn | 由16進(jìn)制數(shù)nn指定的拉丁字符 |
uxxxx | 由16進(jìn)制數(shù)xxxx指定的Unicode字符 |
cX | 控制字符 |
// search(),返回與之匹配子串的起始位置 "JavaScript".search( /script/i ); // 4 // match() , 返回由匹配結(jié)果組成的數(shù)組 "Java is not JavaScript".match( /java(script)?/gi ) // ["Java", "JavaScript"] // replace(), 檢索和替換 "java is not JavaScript".replace( /java/i , "C++" ).replace( /javascript/i , "C") // "C++ is not C" // split() , 將字符串拆分為一個(gè)子串組成的數(shù)組 " 1 , 2, 3 ,4 , 5 ".trim().split( /s*,s*/ ) // ["1", "2", "3", "4", "5"]RegExp對(duì)象
RegExp()為一個(gè)構(gòu)造函數(shù)
// 第一個(gè)參數(shù)為 正則表達(dá)式的主體部分,第二個(gè)參數(shù)為 修飾符 let reg = new RegExp( "java(script)?" , "gi" ); "Java is not JavaScript".match( reg ) // ["Java", "JavaScript"]小結(jié)
此文章是參照了《JavaScript: The Definitive Guide》中的第十章,想仔細(xì)了解JavaScript的正則表達(dá)式可以去翻閱此書籍。
解析一個(gè)URL使用/(w+)://([w.]+)/(S*)/
"Welcome to https://segmentfault.com/t/javascript".match( /(w+)://([w.]+)/(S*)/ ) // ["https://segmentfault.com/t/javascript", "https", "segmentfault.com", "t/javascript"]
... ?
a-zA-Z0-9 ?
0-9 ?
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/81818.html
摘要:前言正則表達(dá)式時(shí)處理字符串中常用的手法,本文以簡(jiǎn)單的方式,快速展示了中正則相關(guān)的基礎(chǔ)知識(shí)點(diǎn)。文末還提供了幾個(gè)簡(jiǎn)單的正則相關(guān)面試題。接下來是正則部分,注意后面的并不匹配,也就是比如,實(shí)際匹配的值是和,在和后面加上,就完成了預(yù)期。 前言:正則表達(dá)式時(shí)處理字符串中常用的手法,本文以簡(jiǎn)單的方式,快速展示了JavaScript中正則相關(guān)的基礎(chǔ)知識(shí)點(diǎn)。文末還提供了幾個(gè)簡(jiǎn)單的正則相關(guān)面試題。個(gè)人總結(jié)...
摘要:寫一個(gè)正則表達(dá)式來測(cè)試變量中是否包含字符串。用函數(shù)給出不使用字符,但和等價(jià)的正則表達(dá)式。第十四課標(biāo)志全局匹配標(biāo)志第二個(gè)常用的標(biāo)志是全局匹配標(biāo)志,用字母表示。寫出一個(gè)正則表達(dá)式來檢驗(yàn)合法性。非捕獲組的主要用途是給一個(gè)組賦予量詞。 TRY REGEX 是一個(gè)交互式的正則表達(dá)式學(xué)習(xí)項(xiàng)目項(xiàng)目地址:https://github.com/callumacra...在線地址:http://tryre...
摘要:特意對(duì)前端學(xué)習(xí)資源做一個(gè)匯總,方便自己學(xué)習(xí)查閱參考,和好友們共同進(jìn)步。 特意對(duì)前端學(xué)習(xí)資源做一個(gè)匯總,方便自己學(xué)習(xí)查閱參考,和好友們共同進(jìn)步。 本以為自己收藏的站點(diǎn)多,可以很快搞定,沒想到一入?yún)R總深似海。還有很多不足&遺漏的地方,歡迎補(bǔ)充。有錯(cuò)誤的地方,還請(qǐng)斧正... 托管: welcome to git,歡迎交流,感謝star 有好友反應(yīng)和斧正,會(huì)及時(shí)更新,平時(shí)業(yè)務(wù)工作時(shí)也會(huì)不定期更...
摘要:系列種優(yōu)化頁(yè)面加載速度的方法隨筆分類中個(gè)最重要的技術(shù)點(diǎn)常用整理網(wǎng)頁(yè)性能管理詳解離線緩存簡(jiǎn)介系列編寫高性能有趣的原生數(shù)組函數(shù)數(shù)據(jù)訪問性能優(yōu)化方案實(shí)現(xiàn)的大排序算法一怪對(duì)象常用方法函數(shù)收集數(shù)組的操作面向?qū)ο蠛驮屠^承中關(guān)鍵詞的優(yōu)雅解釋淺談系列 H5系列 10種優(yōu)化頁(yè)面加載速度的方法 隨筆分類 - HTML5 HTML5中40個(gè)最重要的技術(shù)點(diǎn) 常用meta整理 網(wǎng)頁(yè)性能管理詳解 HTML5 ...
閱讀 928·2021-11-24 09:38
閱讀 943·2021-11-23 09:51
閱讀 2951·2021-11-16 11:44
閱讀 1782·2021-09-22 15:52
閱讀 1686·2021-09-10 11:20
閱讀 1411·2019-08-30 13:47
閱讀 1305·2019-08-29 12:36
閱讀 3340·2019-08-26 10:43