JavaScript 正則表達(dá)式

1. 正則表達(dá)式概述

1.1 什么是正則表達(dá)式

正則表達(dá)式( Regular Expression )是用于匹配字符串中字符組合的模式频蛔。在 JavaScript中,正則表達(dá)式也是對象浑劳。

正則表通常被用來檢索、替換那些符合某個模式(規(guī)則)的文本寸痢,例如驗證表單:用戶名表單只能輸入英文字母呀洲、數(shù)字或者下劃線, 昵稱輸入框中可以輸入中文(匹配)。此外道逗,正則表達(dá)式還常用于過濾掉頁面內(nèi)容中的一些敏感詞(替換)兵罢,或從字符串中獲取我們想要的特定部分(提取)等 。

其他語言也會使用正則表達(dá)式滓窍,本階段我們主要是利用 JavaScript 正則表達(dá)式完成表單驗證卖词。

1.2 正則表達(dá)式的特點(diǎn)

  1. 靈活性、邏輯性和功能性非常的強(qiáng)吏夯。

  2. 可以迅速地用極簡單的方式達(dá)到字符串的復(fù)雜控制此蜈。

  3. 對于剛接觸的人來說,比較晦澀難懂噪生。比如:

^\w+([-+.]\w+)@\w+([-.]\w+).\w+([-.]\w+)*$

  1. 實際開發(fā),一般都是直接復(fù)制寫好的正則表達(dá)式. 但是要求會使用正則表達(dá)式并且根據(jù)實際情況修改正則表達(dá)式. 比如用戶名:

/^[a-z0-9_-]{3,16}$/

2. 正則表達(dá)式在 JavaScript 中的使用

2.1 創(chuàng)建正則表達(dá)式

在 JavaScript 中裆赵,可以通過兩種方式創(chuàng)建一個正則表達(dá)式。

2.1.1 通過調(diào)用 RegExp 對象的構(gòu)造函數(shù)創(chuàng)建

var 變量名 = new RegExp(/表達(dá)式/); 

2.1.1 通過字面量創(chuàng)建

   var 變量名 = /表達(dá)式/;

// 注釋中間放表達(dá)式就是正則字面量

2.2 測試正則表達(dá)式 test

test() 正則對象方法跺嗽,用于檢測字符串是否符合該規(guī)則战授,該對象會返回 true 或 false,其參數(shù)是測試字符串桨嫁。

regexObj.test(str)
  • regexObj 是寫的正則表達(dá)式
  • str 我們要測試的文本
  • 就是檢測str文本是否符合我們寫的正則表達(dá)式規(guī)范.

3. 正則表達(dá)式中的特殊字符

3.1 正則表達(dá)式的組成

一個正則表達(dá)式可以由簡單的字符構(gòu)成植兰,比如 /abc/,也可以是簡單和特殊字符的組合璃吧,比如 /ab*c/ 楣导。其中特殊字符也被稱為元字符,在正則表達(dá)式中是具有特殊意義的專用符號畜挨,如 ^ 筒繁、$ 、+ 等巴元。

3.2 邊界符

正則表達(dá)式中的邊界符(位置符)用來提示字符所處的位置膝晾,主要有兩個字符。

邊界符 說明
^ 表示匹配行首的文本(以誰開始)
$ 表示匹配行尾的文本(以誰結(jié)束)

如果 ^ 和 $ 在一起务冕,表示必須是精確匹配。

3.3 字符類

字符類表示有一系列字符可供選擇幻赚,只要匹配其中一個就可以了禀忆。所有可供選擇的字符都放在方括號內(nèi)

3.3.1 [] 方括號

  /[abc]/.test('andy')     // true

后面的字符串只要包含 abc 中任意一個字符落恼,都返回 true 箩退。

3.3.2 [-] 方括號內(nèi)部 范圍符-

/^[a-z]$/.test(c')     // true

方括號內(nèi)部加上 - 表示范圍,這里表示 a 到 z 26個英文字母都可以佳谦。

3.3.3 [^] 方括號內(nèi)部 取反符^

/[^abc]/.test('andy')     // false
  • 方括號內(nèi)部加上 ^ 表示取反戴涝,只要包含方括號內(nèi)的字符,都返回 false 。

注意和邊界符 ^ 區(qū)別啥刻,邊界符寫到方括號外面奸鸯。

3.3.4. 字符組合

/[a-z1-9]/.test('andy')     // true

方括號內(nèi)部可以使用字符組合,這里表示包含 a 到 z 的26個英文字母和 1 到 9 的數(shù)字都可以可帽。

3.4 量詞符

量詞符用來設(shè)定某個模式出現(xiàn)的次數(shù)娄涩。

量詞. 說明
* 重復(fù)零次或更多次
+ 重復(fù)一次或更多次
? 重復(fù)零次或一-次
{n} 重復(fù)n次
{n,} 重復(fù)n次或更多次
{n,m} 重復(fù)n到m次

3.5 括號總結(jié)

  • 大括號 量詞符. 里面表示重復(fù)次數(shù)
  • 中括號 字符集合。匹配方括號中的任意字符.
  • 小括號 表示優(yōu)先級

3.6 預(yù)定義類

預(yù)定義類指的是某些常見模式的簡寫方式映跟。

預(yù)定類 說明
\d 匹配0-9之間的任一數(shù)字,相當(dāng)于[0-9]
\D 匹配所有0-9以外的字符蓄拣,相當(dāng)于[^0-9]
\w 匹配任意的字母、數(shù)字和下劃線努隙,相當(dāng)于[A-Za-z0-9_ ]
\W 除所有字母球恤、數(shù)字和下劃線以外的字符,相當(dāng)于[^A-Za-z0-9_ ]
\s 匹配空格(包括換行符荸镊、制表符咽斧、空格符等), 相等于[ \tr\nlv\f]
\S 匹配非空格的字符贷洲,相當(dāng)于[^ \trln\v\f]

4. 正則表達(dá)式中的替換

4.1 replace 替換

replace() 方法可以實現(xiàn)替換字符串操作收厨,用來替換的參數(shù)可以是一個字符串或是一個正則表達(dá)式。

stringObject.replace(regexp/substr,replacement)

第一個參數(shù): 被替換的字符串 或者 正則表達(dá)式
第二個參數(shù): 替換為的字符串
返回值是一個替換完畢的新字符串

4.2 正則表達(dá)式參數(shù)

/表達(dá)式/[switch]

switch(也稱為修飾符) 按照什么樣的模式來匹配. 有三種值:
g:全局匹配
i:忽略大小寫
gi:全局匹配 + 忽略大小寫

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末优构,一起剝皮案震驚了整個濱河市诵叁,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌钦椭,老刑警劉巖拧额,帶你破解...
    沈念sama閱讀 218,941評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異彪腔,居然都是意外死亡侥锦,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評論 3 395
  • 文/潘曉璐 我一進(jìn)店門德挣,熙熙樓的掌柜王于貴愁眉苦臉地迎上來恭垦,“玉大人,你說我怎么就攤上這事格嗅》Γ” “怎么了?”我有些...
    開封第一講書人閱讀 165,345評論 0 356
  • 文/不壞的土叔 我叫張陵屯掖,是天一觀的道長玄柏。 經(jīng)常有香客問我,道長贴铜,這世上最難降的妖魔是什么粪摘? 我笑而不...
    開封第一講書人閱讀 58,851評論 1 295
  • 正文 為了忘掉前任瀑晒,我火速辦了婚禮,結(jié)果婚禮上徘意,老公的妹妹穿的比我還像新娘苔悦。我一直安慰自己,他們只是感情好映砖,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,868評論 6 392
  • 文/花漫 我一把揭開白布间坐。 她就那樣靜靜地躺著,像睡著了一般邑退。 火紅的嫁衣襯著肌膚如雪竹宋。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,688評論 1 305
  • 那天地技,我揣著相機(jī)與錄音蜈七,去河邊找鬼。 笑死莫矗,一個胖子當(dāng)著我的面吹牛飒硅,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播作谚,決...
    沈念sama閱讀 40,414評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼三娩,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了妹懒?” 一聲冷哼從身側(cè)響起雀监,我...
    開封第一講書人閱讀 39,319評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎眨唬,沒想到半個月后会前,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,775評論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡匾竿,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年瓦宜,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片岭妖。...
    茶點(diǎn)故事閱讀 40,096評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡临庇,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出昵慌,到底是詐尸還是另有隱情苔巨,我是刑警寧澤,帶...
    沈念sama閱讀 35,789評論 5 346
  • 正文 年R本政府宣布废离,位于F島的核電站,受9級特大地震影響礁芦,放射性物質(zhì)發(fā)生泄漏蜻韭。R本人自食惡果不足惜悼尾,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,437評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望肖方。 院中可真熱鬧闺魏,春花似錦、人聲如沸俯画。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,993評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽艰垂。三九已至泡仗,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間猜憎,已是汗流浹背娩怎。 一陣腳步聲響...
    開封第一講書人閱讀 33,107評論 1 271
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留胰柑,地道東北人截亦。 一個月前我還...
    沈念sama閱讀 48,308評論 3 372
  • 正文 我出身青樓,卻偏偏與公主長得像柬讨,于是被迫代替她去往敵國和親崩瓤。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,037評論 2 355

推薦閱讀更多精彩內(nèi)容