麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁(yè) > 編程 > Regex > 正文

JavaScript正則表達(dá)式上之基本語(yǔ)法(推薦)

2020-03-16 20:59:01
字體:
供稿:網(wǎng)友
一個(gè)正則表達(dá)式就是由普通字符(例如字符 a 到 z)以及特殊字符(稱為元字符)組成的文字模式。這篇文章主要介紹了JavaScript正則表達(dá)式上之基本語(yǔ)法(推薦)的相關(guān)資料,需要的朋友可以參考下
 

正則表達(dá)式語(yǔ)法 

一個(gè)正則表達(dá)式就是由普通字符(例如字符 a 到 z)以及特殊字符(稱為元字符)組成的文字模式。該模式描述在查找文字主體時(shí)待匹配的一個(gè)或多個(gè)字符串。正則表達(dá)式作為一個(gè)模板,將某個(gè)字符模式與所搜索的字符串進(jìn)行匹配。

定義

JavaScript種正則表達(dá)式有兩種定義方式,定義一個(gè)匹配類似 <%XXX%> 的字符串

1. 構(gòu)造函數(shù)

 

復(fù)制代碼代碼如下:

 

var reg=new RegExp('<%[^%>]+%>','g');

 

 

2. 字面量

 

復(fù)制代碼代碼如下:

 

var reg=/<%[^%>]%>/g;

 

 

g:global,全文搜索,默認(rèn)搜索到第一個(gè)結(jié)果接停止i:ingore case,忽略大小寫,默認(rèn)大小寫敏感m:multiple lines,多行搜索(更改^ 和$的含義,使它們分別在任意一行對(duì)待行首和行尾匹配,而不僅僅在整個(gè)字符串的開頭和結(jié)尾匹配)

元字符

正則表達(dá)式讓人望而卻步以一個(gè)重要原因就是其轉(zhuǎn)義字符太多了,組合非常之多,但是正則表達(dá)式的元字符(在正則表達(dá)式中具有特殊意義的專用字符,可以用來規(guī)定其前導(dǎo)字符)并不多

元字符:( [ { / ^ $ | ) ? * + .

并不是每個(gè)元字符都有其特定意義,在不同的組合中元字符有不同的意義,分類看一下

JavaScript,正則表達(dá)式,語(yǔ)法

字符類

一般情況下正則表達(dá)式一個(gè)字符(轉(zhuǎn)義字符算一個(gè))對(duì)應(yīng)字符串一個(gè)字符,表達(dá)式 ab/t 的含義是

JavaScript,正則表達(dá)式,語(yǔ)法

但是我們可以使用元字符[]來構(gòu)建一個(gè)簡(jiǎn)單的類,所謂類是指,符合某些特征的對(duì)象,是一個(gè)泛指,而不是特指某個(gè)字符了,我們可以使用表達(dá)式 [abc] 把字符a或b或c歸為一類,表達(dá)式可以匹配這類的字符

JavaScript,正則表達(dá)式,語(yǔ)法

元字符[]組合可以創(chuàng)建一個(gè)類,我們還可以使用元字符^創(chuàng)建反向類/負(fù)向類,反向類的意思是不屬于XXX類的內(nèi)容,表達(dá)式 [^abc] 表示不是字符a或b或c的內(nèi)容

JavaScript,正則表達(dá)式,語(yǔ)法

范圍類

按照上面的說明要是我們希望匹配單個(gè)數(shù)字那么表達(dá)式是這樣的

[0123456789]

如果是字母那么。。。,好麻煩,正則表達(dá)式還提供了范圍類,我們可以使用 x-y來連接兩個(gè)字符表示從x到y(tǒng)的任意字符,這是個(gè)閉區(qū)間,也就是說包含x和ybenshen,這樣匹配小寫字母就很簡(jiǎn)單了

[a-z]

JavaScript,正則表達(dá)式,語(yǔ)法

要是想匹配所有字母呢?在[]組成的類內(nèi)部是可以連寫的,我們還可以這樣寫[a-zA-Z]

JavaScript,正則表達(dá)式,語(yǔ)法

預(yù)定義類

剛才使用正則我們創(chuàng)建了幾個(gè)類,來表示數(shù)字,字母等,但這樣寫也很是麻煩,正則表達(dá)式為我們提供了幾個(gè)常用的預(yù)定義類來匹配常見的字符

JavaScript,正則表達(dá)式,語(yǔ)法

有了這些預(yù)定義類,寫一些正則就很方便了,比如我們希望匹配一個(gè) ab+數(shù)字+任意字符 的字符串,就可以這樣寫了 ab/d.

JavaScript,正則表達(dá)式,語(yǔ)法

邊界

正則表達(dá)式還提供了幾個(gè)常用的邊界匹配字符

JavaScript,正則表達(dá)式,語(yǔ)法

看個(gè)不負(fù)責(zé)任的郵箱正則匹配(切勿模仿,小括號(hào)后面會(huì)講到)/w+@/w+/.(com)$

JavaScript,正則表達(dá)式,語(yǔ)法

量詞

之前我們介紹的方法都是一一匹配的,如果我們希望匹配一個(gè)連續(xù)出現(xiàn)20次數(shù)字的字符串難道我們需要寫成這樣

/d/d/d/d...

為此正則表達(dá)式引入了一些量詞

JavaScript,正則表達(dá)式,語(yǔ)法

看幾個(gè)使用量詞的例子

/w+/b Byron 匹配 單詞+邊界+Byron

 

復(fù)制代碼代碼如下:

 

(//w+/b Byron/).test('Hi Byron'); //true(//w+/b Byron/).test('Welcome Byron'); //true(//w+/b Byron/).test('HiByron'); //false

 

 

/d+/./d{1,3} 匹配三位小數(shù)的數(shù)字

JavaScript,正則表達(dá)式,語(yǔ)法

貪婪模式與非貪婪模式

看了上面介紹的量詞,也許愛思考的同學(xué)會(huì)想到關(guān)于匹配原則的一些問題,比如{3,5}這個(gè)量詞,要是在句子種出現(xiàn)了十次,那么他是每次匹配三個(gè)還是五個(gè),反正3、4、5都滿足3~5的條件,量詞在默認(rèn)下是盡可能多的匹配的,也就是大家常說的貪婪模式

 

復(fù)制代碼代碼如下:

 

'123456789'.match(//d{3,5}/g); //["12345", "6789"]

 

 

既然有貪婪模式,那么肯定會(huì)有非貪婪模式,讓正則表達(dá)式盡可能少的匹配,也就是說一旦成功匹配不不再繼續(xù)嘗試,做法很簡(jiǎn)單,在量詞后加上 ? 即可

 

復(fù)制代碼代碼如下:

 

'123456789'.match(//d{3,5}?/g); //["123", "456", "789"]

 

 

分組

有時(shí)候我們希望使用量詞的時(shí)候匹配多個(gè)字符,而不是像上面例子只是匹配一個(gè),比如希望匹配Byron出現(xiàn)20次的字符串,我們?nèi)绻麑懗葿yron{20} 的話匹配的是Byro+n出現(xiàn)20次,怎么把Byron作為一個(gè)整體呢?使用()就可以達(dá)到次目的,我們稱為分組

(Byron){20}

JavaScript,正則表達(dá)式,語(yǔ)法

如果希望匹配Byron或Casper出現(xiàn)20次該怎么辦呢?可以使用字符 | 達(dá)到或的功效

(Byron|Casper){20}

JavaScript,正則表達(dá)式,語(yǔ)法

我們看到圖中有個(gè)#1的東東,那是什么?使用分組的正則表達(dá)式會(huì)把匹配項(xiàng)也放到分組中,默認(rèn)就是按數(shù)字編號(hào)分發(fā)的,各異根據(jù)編號(hào)獲得捕獲的分組內(nèi)容,這個(gè)在一些希望具體操作第幾個(gè)匹配項(xiàng)的函數(shù)中很有用

(Byron).(ok)

JavaScript,正則表達(dá)式,語(yǔ)法

如果有分組嵌套的情況,外面的組的編號(hào)靠前

((^|%>)[^/t]*)

JavaScript,正則表達(dá)式,語(yǔ)法

有時(shí)候我們不希望捕獲某些分組,只需要在分組內(nèi)加上 ?: 就可以了,著并不意味著該分組內(nèi)容不屬于正則表達(dá)式,只是不會(huì)給這個(gè)分組加編號(hào)了而已

(?:Byron).(ok)

JavaScript,正則表達(dá)式,語(yǔ)法

其實(shí)在C#等語(yǔ)言中分組還可以起名字,不過JavaScript不支持

前瞻表達(dá)式

JavaScript,正則表達(dá)式,語(yǔ)法

說的有些抽象,看個(gè)例子good(?=Byron)

JavaScript,正則表達(dá)式,語(yǔ)法

 

復(fù)制代碼代碼如下:

 

(/good(?=Byron)/).exec('goodByron123'); //['good'](/good(?=Byron)/).exec('goodCasper123'); //null(/bad(?=Byron)/).exec('goodCasper123');//null

 

 

通過上面例子可以看出 exp1(?=exp2) 表達(dá)式會(huì)匹配exp1表達(dá)式,但只有其后面內(nèi)容是exp2的時(shí)候才會(huì)匹配,也就是兩個(gè)條件,exp1(?!exp2) 比較類似

good(?!Byron)

JavaScript,正則表達(dá)式,語(yǔ)法

 

復(fù)制代碼代碼如下:

 

(/good(?!Byron)/).exec('goodByron123'); //null(/good(?!Byron)/).exec('goodCasper123'); //['good'](/bad(?!Byron)/).exec('goodCasper123');//null

 

 

以上所述是小編給大家介紹的JavaScript正則表達(dá)式上之基本語(yǔ)法(推薦)的相關(guān)知識(shí),希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)VEVB武林網(wǎng)網(wǎng)站的支持!



注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到正則表達(dá)式頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 黄色毛片视频在线观看 | 九九热在线观看视频 | 成人毛片视频免费看 | 日韩av电影在线免费观看 | 国产精品美女一区二区 | 牛牛碰在线 | 国产xxxx免费 | 美国一级免费视频 | 高清在线国产 | 国产99精品在线 | 9999久久久久久 | 免费久久久 | 日韩精品中文字幕一区二区 | 久国久产久精永久网页 | 在线视频观看成人 | h视频在线观看免费 | 久色亚洲| 多男操一女视频 | 黄色电影免费提供 | 久色乳综合思思在线视频 | 久久久日韩av免费观看下载 | 国产成人精品日本亚洲语音 | 黄色电影免费提供 | 中文字幕在线观看精品 | 黄色影院av | 爱操视频 | 国产资源在线免费观看 | 看免费av| 精品国产看高清国产毛片 | 国产精品久久久久久婷婷天堂 | 369看片你懂的小视频在线观看 | 国产午夜精品一区二区三区在线观看 | 亚洲国产精品久久久久久久 | 五月激情久久 | 免费看黄色一级大片 | 一区二区久久电影 | 国产又白又嫩又紧又爽18p | 精品在线视频播放 | 27xxoo无遮挡动态视频 | 欧美一级不卡视频 | 91久久另类重口变态 |