讀阮一峰JavaScript教程書筆記四

1 RegExp之test

var r = /x/g;
var s = '_x_x';

r.lastIndex // 0
r.test(s) // true

r.lastIndex // 2
r.test(s) // true

r.lastIndex // 4
r.test(s) // false

如果正則表達式帶有g修飾符,則每一次test方法都從上一次結束的位置開始向后匹配蚂维。
正則表達式內部會記住上一次的lastIndex屬性 。

var r = /x/g;
var s = '_x_x';

r.lastIndex = 4;
r.test(s) // false

r.lastIndex // 0
r.test(s)

帶有g修飾符時,可以通過正則對象的lastIndex屬性指定開始搜索的位置灌旧。

2 RegExp之exec

正則實例對象的exec方法,用來返回匹配結果绰筛。如果發(fā)現(xiàn)匹配枢泰,就返回一個數(shù)組,成員是匹配成功的子字符串铝噩,否則返回null衡蚂。

var reg = /a/g;
var str = 'abc_abc_abc'

var r1 = reg.exec(str);
r1 // ["a"]
r1.index // 0
reg.lastIndex // 1

var r2 = reg.exec(str);
r2 // ["a"]
r2.index // 4
reg.lastIndex // 5

var r3 = reg.exec(str);
r3 // ["a"]
r3.index // 8
reg.lastIndex // 9

var r4 = reg.exec(str);
r4 // null
reg.lastIndex // 0

利用g修飾符允許多次匹配的特點,可以用一個循環(huán)完成全部匹配。

var reg = /a/g;
var str = 'abc_abc_abc'

while(true) {
  var match = reg.exec(str);
  if (!match) break;
  console.log('#' + match.index + ':' + match[0]);
}
// #0:a
// #4:a
// #8:a

3 RegExp之string

match毛甲,search年叮,replace, split
如果正則表達式帶有g修飾符,則該方法與正則對象的exec方法行為不同玻募,會一次性返回所有匹配成功的結果只损。

var s = 'abba';
var r = /a/g;

s.match(r) // ["a", "a"]
r.exec(s) // ["a"]

字符串對象的search方法,返回第一個滿足條件的匹配結果在整個字符串中的位置七咧。如果沒有任何匹配跃惫,則返回-1。
split用法:

// 非正則分隔
'a,  b,c, d'.split(',')
// [ 'a', '  b', 'c', ' d' ]

// 正則分隔坑雅,去除多余的空格
'a,  b,c, d'.split(/, */)
// [ 'a', 'b', 'c', 'd' ]

// 指定返回數(shù)組的最大成員
'a,  b,c, d'.split(/, */, 2)
[ 'a', 'b' ]
// 例一
'aaa*a*'.split(/a*/)
// [ '', '*', '*' ]

// 例二
'aaa**a*'.split(/a*/)
// ["", "*", "*", "*"]

4 RegExp之字面量字符和元字符

點字符(.)匹配除回車(\r)辈挂、換行(\n) 、行分隔符(\u2028)和段分隔符(\u2029)以外的所有字符裹粤。

// 從開始位置到結束位置只有test
/^test$/.test('test') // true
/^test$/.test('test test') // false

正則表達式中终蒂,需要反斜杠轉義的,一共有12個字符:^遥诉、.拇泣、[、$矮锈、(霉翔、)、|苞笨、*债朵、+、?瀑凝、{和\序芦。

/[^abc]/.test('hello world') // true
/[^abc]/.test('bbc') // false

如果方括號內沒有其他字符,即只有[^]粤咪,就表示匹配一切字符谚中,其中包括換行符。相比之下寥枝,點號作為元字符(.)是不包括換行符的宪塔。

/a-z/.test('b') // false
/[a-z]/.test('b') // true

只有當連字號用在方括號之中,才表示連續(xù)的字符序列囊拜。

\d 匹配0-9之間的任一數(shù)字某筐,相當于[0-9]。
\D 匹配所有0-9以外的字符冠跷,相當于[^0-9]来吩。
\w 匹配任意的字母敢辩、數(shù)字和下劃線,相當于[A-Za-z0-9_]弟疆。
\W 除所有字母、數(shù)字和下劃線以外的字符盗冷,相當于[^A-Za-z0-9_]怠苔。
\s 匹配空格(包括換行符、制表符仪糖、空格符等)柑司,相等于[ \t\r\n\v\f]。
\S 匹配非空格的字符锅劝,相當于[^ \t\r\n\v\f]攒驰。

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市故爵,隨后出現(xiàn)的幾起案子玻粪,更是在濱河造成了極大的恐慌,老刑警劉巖诬垂,帶你破解...
    沈念sama閱讀 219,539評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件劲室,死亡現(xiàn)場離奇詭異,居然都是意外死亡结窘,警方通過查閱死者的電腦和手機很洋,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,594評論 3 396
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來隧枫,“玉大人喉磁,你說我怎么就攤上這事」倥В” “怎么了协怒?”我有些...
    開封第一講書人閱讀 165,871評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長确买。 經常有香客問我斤讥,道長,這世上最難降的妖魔是什么湾趾? 我笑而不...
    開封第一講書人閱讀 58,963評論 1 295
  • 正文 為了忘掉前任芭商,我火速辦了婚禮,結果婚禮上搀缠,老公的妹妹穿的比我還像新娘铛楣。我一直安慰自己,他們只是感情好艺普,可當我...
    茶點故事閱讀 67,984評論 6 393
  • 文/花漫 我一把揭開白布簸州。 她就那樣靜靜地躺著鉴竭,像睡著了一般。 火紅的嫁衣襯著肌膚如雪岸浑。 梳的紋絲不亂的頭發(fā)上搏存,一...
    開封第一講書人閱讀 51,763評論 1 307
  • 那天,我揣著相機與錄音矢洲,去河邊找鬼璧眠。 笑死,一個胖子當著我的面吹牛读虏,可吹牛的內容都是我干的责静。 我是一名探鬼主播,決...
    沈念sama閱讀 40,468評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼盖桥,長吁一口氣:“原來是場噩夢啊……” “哼灾螃!你這毒婦竟也來了?” 一聲冷哼從身側響起揩徊,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤腰鬼,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后靴拱,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體垃喊,經...
    沈念sama閱讀 45,850評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,002評論 3 338
  • 正文 我和宋清朗相戀三年袜炕,在試婚紗的時候發(fā)現(xiàn)自己被綠了本谜。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,144評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡偎窘,死狀恐怖乌助,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情陌知,我是刑警寧澤他托,帶...
    沈念sama閱讀 35,823評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站仆葡,受9級特大地震影響赏参,放射性物質發(fā)生泄漏。R本人自食惡果不足惜沿盅,卻給世界環(huán)境...
    茶點故事閱讀 41,483評論 3 331
  • 文/蒙蒙 一把篓、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧腰涧,春花似錦韧掩、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,026評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽坊谁。三九已至,卻和暖如春滑臊,著一層夾襖步出監(jiān)牢的瞬間口芍,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,150評論 1 272
  • 我被黑心中介騙來泰國打工简珠, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留阶界,地道東北人。 一個月前我還...
    沈念sama閱讀 48,415評論 3 373
  • 正文 我出身青樓聋庵,卻偏偏與公主長得像,于是被迫代替她去往敵國和親芙粱。 傳聞我的和親對象是個殘疾皇子祭玉,可洞房花燭夜當晚...
    茶點故事閱讀 45,092評論 2 355

推薦閱讀更多精彩內容

  • 概述 正則表達式(regular expression)是一種表達文本模式(即字符串結構)的方法,有點像字符串的模...
    許先生__閱讀 272評論 0 1
  • 一春畔、概述 正則表達式(regular expression)是一種表達字符串結構的方法脱货,有點像字符串的模版,常常用...
    周花花啊閱讀 574評論 0 1
  • 自從年前得空寫了兩篇文章之后就開始忙了律姨,這一忙就是2個月??振峻。當時信誓旦旦說的定期寫篇博客的計劃也就泡湯了??,不過好...
    景科同學閱讀 1,160評論 0 9
  • '^'必須才開頭開始匹配'$'必須在末尾結束匹配'|' 表示‘或’/ab|cd/匹配ab或者cd'.'表示點字符(...
    zjh111閱讀 415評論 0 0
  • 今天的雨下的真是任性择份,一會瓢潑扣孟,一會牛毛,一會陽光荣赶,一會雷電凤价。我一邊收拾東西準備下班,一邊抱怨天氣拔创,小桑來電話的時...
    周小南閱讀 376評論 0 0