【標(biāo)準(zhǔn)庫(kù)】RegExp

申明方式, 第二種可以使用變量

var regex = /xyz/;
var regex = new RegExp('xyz', i);

var reg = 'xyz';
var regex = new RegExp(reg);
  • 在匹配的時(shí)候 會(huì)記住上次的lastIndex所以匹配的時(shí)候不應(yīng)該更改所要匹配的字符串
var r = /bb/g;
r.test('bb') // true
r.test('-bb-') // false
new RegExp('').test('abc')
  • exec() 用來(lái)返回匹配結(jié)果届囚,匹配成功竿屹,返回一個(gè)數(shù)組各淀,失敗返回null
var s = '_x_x';
var r1 = /x/;
var r2 = /y/;

r1.exec(s) // ["x"]
r2.exec(s) // null
  • String.prototype.match() lastIndex 屬性無(wú)效
  • String.prototype.search() 返回第一個(gè)滿(mǎn)足的位置盾鳞,沒(méi)有返回-1
  • String.prototype.replace()
替換字符
$&  指代匹配的字符串
$`   匹配結(jié)果之前all
$'   匹配結(jié)果之后all
'hello world'.replace(/(\w+)\s(\w+)/, '$2 $1')
// "world hello"

'abc'.replace('b', '[$`-$&-$\']')
// "a[a-b-c]c"

第二個(gè)參數(shù)是 函數(shù)

var a = 'The quick brown fox jumped over the lazy dog.';
var pattern = /quick|brown|lazy/ig;

a.replace(pattern, function replacer(match) {
  return match.toUpperCase();
});

捕捉模式 替換模板

var prices = {
  'p1': '$1.99',
  'p2': '$9.99',
  'p3': '$5.00'
};

var template = '<span id="p1"></span>'
  + '<span id="p2"></span>'
  + '<span id="p3"></span>';

template.replace(
  /(<span id=")(.*?)(">)(<\/span>)/g,
  function(match, $1, $2, $3, $4){
    return $1 + $2 + $3 + prices[$2] + $4;
  }
);
// "<span id="p1">$1.99</span><span id="p2">$9.99</span><span id="p3">$5.00</span>"

字面量字符和元字符

  • 點(diǎn)字符(.)
    點(diǎn)字符(.)匹配除回車(chē)(\r)犬性、換行(\n) 、行分隔符(\u2028)和段分隔符(\u2029)以外的所有字符
  • 位置符
    ^ $ 開(kāi)始 結(jié)束
  • 選擇符|
/11|22/.test('911') // true
  • [] && [^]
    如果方括號(hào)里面沒(méi)有其他字符腾仅,只有[^] 就表示匹配一起字符乒裆,而點(diǎn)號(hào)(.)不包括換行回車(chē)這些
/[abc]/.test('hello world') // false
/[abc]/.test('apple') // true
/[^abc]/.test('bbc') // false

var s = 'Please yes\nmake my day!';

s.match(/yes.*day/) // null
s.match(/yes[^]*day/) // [ 'yes\nmake my day']
  • [-] 可選連字符
  • 預(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 匹配空格(包括換行符鼻听、制表符财著、空格符等),相等于[ \t\r\n\v\f]撑碴。
\S 匹配非空格的字符撑教,相當(dāng)于[^ \t\r\n\v\f]。
\b 匹配詞的邊界醉拓。
\B 匹配非詞邊界伟姐,即在詞的內(nèi)部。
  • {n,m} 表示匹配次數(shù)亿卤,n到m次,{n,m}表示重復(fù)不少于n次愤兵,不多于m次。
排吴? 表示出現(xiàn)0 到1次 等同`{0,1}`
* 表示0到多次秆乳,等同于{0,}
+ 表示1到多次,等同于{1,}
  • 貪婪模式 +? *? ??
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末钻哩,一起剝皮案震驚了整個(gè)濱河市屹堰,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌街氢,老刑警劉巖扯键,帶你破解...
    沈念sama閱讀 221,820評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異珊肃,居然都是意外死亡荣刑,警方通過(guò)查閱死者的電腦和手機(jī)馅笙,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,648評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)厉亏,“玉大人董习,你說(shuō)我怎么就攤上這事∫抖眩” “怎么了阱飘?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,324評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)虱颗。 經(jīng)常有香客問(wèn)我,道長(zhǎng)蔗喂,這世上最難降的妖魔是什么忘渔? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,714評(píng)論 1 297
  • 正文 為了忘掉前任,我火速辦了婚禮缰儿,結(jié)果婚禮上畦粮,老公的妹妹穿的比我還像新娘。我一直安慰自己乖阵,他們只是感情好宣赔,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,724評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著瞪浸,像睡著了一般儒将。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上对蒲,一...
    開(kāi)封第一講書(shū)人閱讀 52,328評(píng)論 1 310
  • 那天钩蚊,我揣著相機(jī)與錄音,去河邊找鬼蹈矮。 笑死砰逻,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的泛鸟。 我是一名探鬼主播蝠咆,決...
    沈念sama閱讀 40,897評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼北滥!你這毒婦竟也來(lái)了刚操?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,804評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤碑韵,失蹤者是張志新(化名)和其女友劉穎赡茸,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體祝闻,經(jīng)...
    沈念sama閱讀 46,345評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡占卧,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,431評(píng)論 3 340
  • 正文 我和宋清朗相戀三年遗菠,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片华蜒。...
    茶點(diǎn)故事閱讀 40,561評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡辙纬,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出叭喜,到底是詐尸還是另有隱情贺拣,我是刑警寧澤,帶...
    沈念sama閱讀 36,238評(píng)論 5 350
  • 正文 年R本政府宣布捂蕴,位于F島的核電站譬涡,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏啥辨。R本人自食惡果不足惜涡匀,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,928評(píng)論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望溉知。 院中可真熱鬧陨瘩,春花似錦、人聲如沸级乍。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,417評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)玫荣。三九已至甚淡,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間崇决,已是汗流浹背材诽。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,528評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留恒傻,地道東北人脸侥。 一個(gè)月前我還...
    沈念sama閱讀 48,983評(píng)論 3 376
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像盈厘,于是被迫代替她去往敵國(guó)和親睁枕。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,573評(píng)論 2 359

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

  • 一沸手、概述 正則表達(dá)式(regular expression)是一種表達(dá)字符串結(jié)構(gòu)的方法外遇,有點(diǎn)像字符串的模版,常常用...
    周花花啊閱讀 576評(píng)論 0 1
  • 概述 正則表達(dá)式(regular expression)是一種表達(dá)文本模式(即字符串結(jié)構(gòu))的方法契吉,有點(diǎn)像字符串的模...
    許先生__閱讀 272評(píng)論 0 1
  • 前言 最先接觸編程的知識(shí)是在大學(xué)里面捐晶,大學(xué)里面學(xué)了一些基礎(chǔ)的知識(shí)菲语,c語(yǔ)言妄辩,java語(yǔ)言,單片機(jī)的匯編語(yǔ)言等山上;大學(xué)畢...
    oceanfive閱讀 3,095評(píng)論 0 7
  • '^'必須才開(kāi)頭開(kāi)始匹配'$'必須在末尾結(jié)束匹配'|' 表示‘或’/ab|cd/匹配ab或者cd'.'表示點(diǎn)字符(...
    zjh111閱讀 416評(píng)論 0 0
  • 參考基礎(chǔ)教程的整理眼耀,方便記憶 一、Object對(duì)象 (O大寫(xiě)) 所有其他對(duì)象都繼承自這個(gè)對(duì)象佩憾。Object本身也是...
    Viaphlyn閱讀 2,330評(píng)論 0 0