摘要:分組小括號(hào)功能較多有三種功能,作用一,把多帶帶的項(xiàng)組合成子表達(dá)式。作用三,允許后面引用前面的表達(dá)式。如果這時(shí)的正則表達(dá)式是一個(gè)非全局的,那么和正則表達(dá)式方法拿到的結(jié)果相同。,也可以接受一個(gè)正則表達(dá)式作為參數(shù)。
正則表達(dá)式創(chuàng)建
字面量創(chuàng)建,a = /abc/gim;
構(gòu)造函數(shù)創(chuàng)建,a = new RegExp("abc","gim")
正則表達(dá)式中的特殊字符,
[...] 方括號(hào)中的任意字符
[^...] 非方括號(hào)中的任意字符
s 空白字符
S 非空白字符
d 數(shù)字
D 非數(shù)字
w 字母和數(shù)字,相當(dāng)于[a-zA-Z0-9]
W 非字母和數(shù)字
重復(fù)
{m,n} 介于m到n次之間
{m} 恰好等于m次
{m,} 大于等于m次
? 0次或者1次
* 0次或者n次
+ 1次或者n次
貪婪的匹配
重復(fù)的一種,貪婪的匹配即普通的書(shū)寫(xiě)方式,盡可能多的匹配;非貪婪的匹配就是盡可能少的匹配,在重復(fù)的表示符號(hào)后面加上?,例如/a?/,字符串為aaaa,將會(huì)匹配第一個(gè)a。需要注意的是,/a?b/來(lái)匹配aaaab得到的匹配結(jié)果是aaaab,而不是ab。
選擇
選擇通過(guò)‘|’來(lái)實(shí)現(xiàn),用于分隔供選擇的字符。匹配的次序是從左到右,如果左邊已經(jīng)匹配了,就不考慮右邊的匹配項(xiàng)了。當(dāng)然,然后是全局匹配的話可以找出所有的匹配項(xiàng)。
分組
小括號(hào)功能較多有三種功能,
1.作用一,把多帶帶的項(xiàng)組合成子表達(dá)式。將一段字符串組成子表達(dá)式,例如/java(script)?/就可以用來(lái)匹配Java以及JavaScript。
2.作用二,定義子模式,在調(diào)用exec方法的時(shí)候,返回值的數(shù)組第二項(xiàng)開(kāi)始就是子模式的匹配結(jié)果了。
3.作用三,允許后面引用前面的表達(dá)式。例如,1引用的是第一個(gè)圓括號(hào)對(duì)應(yīng)的表達(dá)式,2引用的是第二個(gè)圓括號(hào)對(duì)應(yīng)的表達(dá)式。例如要匹配字符串中的子字符串,子字符串的引號(hào)應(yīng)該相同,同為單引號(hào)或者同為雙引號(hào)。在不借助引用的情況下只能這么寫(xiě),/[""]S[""]/。這樣做不到同為單引號(hào)或者雙引號(hào),可以改為/[""]11/
指明位置
^x 以x為開(kāi)始
x$ 以x結(jié)束
/bjava/ 匹配Java
/Bjava/ 匹配ajava,不匹配Java,因?yàn)锽表示單詞不在這里斷
(?=p) 零寬正向斷言,后面必須有p,但是不匹配p;這里說(shuō)的不匹配p意思是通過(guò)match函數(shù)的返回?cái)?shù)組中不包含p,即這里的p只是作為一個(gè)條件。例如 /java(?=:)/,它不匹配JavaScript,匹配JavaScript:。
(?!p) 零寬負(fù)向斷言,后面必須沒(méi)有p,同時(shí)不匹配p。例如/java(?!:)/,它匹配JavaScript,它不匹配JavaScript:。
修飾符
i 忽略大小寫(xiě)
g 全局多次匹配
m 多行匹配
寫(xiě)法實(shí)例:/[abc]/gim可以匹配a、b、c、A、B、C。如果字符串有多個(gè),所有的匹配項(xiàng)都可以匹配出來(lái)。
/abc$/g,這個(gè)表達(dá)式至多能匹配出一個(gè)匹配項(xiàng)
/abc$/gm,這個(gè)表達(dá)式可以匹配出多個(gè)匹配項(xiàng),將每次換行都看作是一次結(jié)束
正則表達(dá)式的方法
這里說(shuō)的方法,即包括字符串和正則表達(dá)式相關(guān)的方法,也包括正則表達(dá)式自身的方法
字符串的四個(gè)方法,
String.search() 查找第一個(gè)匹配項(xiàng)的索引
Sring.replace() 第一個(gè)參數(shù)是正則表達(dá)式,如果正則表達(dá)式是全局那么將替換掉所有的匹配項(xiàng)
String.match() 得到所有的放回項(xiàng)數(shù)組。如果這時(shí)的正則表達(dá)式是一個(gè)非全局的,那么和正則表達(dá)式exec()方法拿到的結(jié)果相同。
String.split(),也可以接受一個(gè)正則表達(dá)式作為參數(shù)。
regexp有兩個(gè)方法,分別是exec和test。exec的返回值是一個(gè)數(shù)組,test的方式值時(shí)一個(gè)布爾類(lèi)型。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/99013.html
摘要:說(shuō)來(lái)慚愧,做前端快三年對(duì)于正則表達(dá)式的應(yīng)用還是很淺薄,大家都知道正則的速度基本上是最快的,但就是懶得去記那些語(yǔ)法和規(guī)則,這次項(xiàng)目中多次用到了需要匹配替換的動(dòng)作,終于下定決心去研究一下了。 說(shuō)來(lái)慚愧,做前端快三年對(duì)于正則表達(dá)式的應(yīng)用還是很淺薄,大家都知道正則的速度基本上是最快的,但就是懶得去記那些語(yǔ)法和規(guī)則,這次項(xiàng)目中多次用到了需要匹配替換的動(dòng)作,終于下定決心去研究一下了。 實(shí)例化正則對(duì)...
摘要:第二階段該部分內(nèi)容是學(xué)習(xí)正則的第二篇內(nèi)容,點(diǎn)擊第一部分查看第一部分的內(nèi)容。 第二階段 該部分內(nèi)容是學(xué)習(xí)正則的第二篇內(nèi)容,點(diǎn)擊第一部分查看第一部分的內(nèi)容。 這部分學(xué)習(xí)的內(nèi)容包括: 分組 斷言 匹配模式(貪婪和懶惰) 分組 我們可以通過(guò)量詞匹配一個(gè)字符多次,但是如果我們想要匹配多個(gè)字符多次,就需要用到分組,比如下面一個(gè)例子 // 匹配字母和數(shù)字連續(xù)出現(xiàn)三次的字符 let str = a...
摘要:本文內(nèi)容共正則表達(dá)式火拼系列正則表達(dá)式回溯法原理學(xué)習(xí)正則表達(dá)式,是需要懂點(diǎn)兒匹配原理的。正則表達(dá)式迷你書(shū)問(wèn)世了讓幫你生成和解析參數(shù)字符串最全正則表達(dá)式總結(jié)驗(yàn)證號(hào)手機(jī)號(hào)中文郵編身份證地址等是正則表達(dá)式的縮寫(xiě),作用是對(duì)字符串執(zhí)行模式匹配。 JS 的正則表達(dá)式 正則表達(dá)式 一種幾乎可以在所有的程序設(shè)計(jì)語(yǔ)言里和所有的計(jì)算機(jī)平臺(tái)上使用的文字處理工具。它可以用來(lái)查找特定的信息(搜索),也可以用來(lái)查...
摘要:正則表達(dá)式作為前端學(xué)習(xí)的一個(gè)知識(shí)點(diǎn),是每個(gè)合格的前端開(kāi)發(fā)都應(yīng)該掌握它的用法。元字符一般情況下,正則表達(dá)式的一個(gè)字符對(duì)應(yīng)字符串的一個(gè)字符。 正則表達(dá)式作為前端學(xué)習(xí)的一個(gè)知識(shí)點(diǎn),是每個(gè)合格的前端開(kāi)發(fā)都應(yīng)該掌握它的用法。正則表達(dá)式的學(xué)習(xí)確實(shí)不難,語(yǔ)法和應(yīng)用也非常簡(jiǎn)單,能夠快速入門(mén),很輕松的就能寫(xiě)出簡(jiǎn)單的表達(dá)式來(lái)對(duì)字符串執(zhí)行某些操作。網(wǎng)上也有標(biāo)題黨說(shuō)一杯咖啡的時(shí)間就能學(xué)會(huì)。能學(xué)會(huì)嗎?能!但要真...
閱讀 2608·2023-04-25 19:31
閱讀 2331·2021-11-04 16:11
閱讀 2887·2021-10-08 10:05
閱讀 1598·2021-09-30 09:48
閱讀 2426·2019-08-30 15:56
閱讀 2478·2019-08-30 15:56
閱讀 2237·2019-08-30 15:53
閱讀 2344·2019-08-30 15:44