JS常用API手冊(cè)4-正則表達(dá)式

圖形化檢測(cè)工具

表示方式

var rule = new RegExp("模式字符串"缠局, "標(biāo)志");
var rule = /模式字符串/標(biāo)志;

test

rule.test("被檢測(cè)的字符串");
"被檢測(cè)的字符串".indexOf(searchString);
"被檢測(cè)的字符串".indexOf(searchString, position)
"被檢測(cè)的字符串".search(/正則表達(dá)式/);      //g是沒(méi)有用的竹祷,都是返回的第一個(gè)適配的

等價(jià)表達(dá)式

var rule = /[a-z]/i
var rule = /[a-zA-Z]/

# 字母厚脉、數(shù)字央拖、下劃線
var rule2 = /\w/
var rule2 = /a-zA-Z0-9_/

exec

返回一個(gè)符合的數(shù)組

rule.exec("被檢測(cè)的字符串");

說(shuō)明:
1.沒(méi)有g(shù)時(shí)申尼,循環(huán)次數(shù)沒(méi)有限制垮卓,每次結(jié)果都一樣
2.有g(shù)時(shí),每次結(jié)果可能不一樣
3.沒(méi)有匹配的文本則返回null,否則返回一個(gè)結(jié)果數(shù)組
4.index 聲明匹配文本的第一個(gè)字符的位置
5.input 存放被檢索的字符串string(就是被匹配的字符串)

var reg3 = /\d(\w)\d/;
var reg4 = /\d(\w)\d/g;
var ts = '1a2b3c4d5e';

//var ret = reg3.exec(ts);

while(ret = reg4.exec(ts)){
    console.log(reg4.lastIndex + '\t' + ret.index + '\t' + ret.toString());
}
//3 0   1a2,a
//7 4   3c4,c

match

match與exec方向相反

"被檢測(cè)的字符串".match(rule);
  • match()方法將檢索字符串师幕,以找到一個(gè)或多個(gè)regexp匹配的文本
  • regexp是否具有標(biāo)志g對(duì)結(jié)果影響很大

replace

"被檢測(cè)的字符串".replace(/正則表達(dá)式/g, replaceFun)
"被檢測(cè)的字符串".replace(/正則表達(dá)式/g, '#');

replaceFun參數(shù)含義
replaceFun會(huì)在每次匹配替換的時(shí)候調(diào)用粟按,有四個(gè)參數(shù)
1.匹配字符串
2.正則表達(dá)式分組內(nèi)容,沒(méi)有分組則沒(méi)有該參數(shù)
3.匹配釘在字符串中的index
4.原字符串

'a1b2c3d4e5'.replace(/(\d)(\w)(\d)/g, function(match, group1, group2, group3, index, origin){
    console.log("match:   " + match);
    console.log("group1:" + group1);
    console.log("group2:" + group2);
    console.log("group3:" + group3);
    console.log("index:" + index);
    console.log("origin:" + origin);
});

trim

"    fdasfsaas  ".replace(/^\s+/,"").replace(/\s+$/,"");
"    fdasfsaas  ".replace(/(^\s+)|(\s+$)/g,"")
"    fdasfsaas  ".replace(/^\s*(.+?)\s*$/, '$1');
/^\s*(.+?)\s*$/.exec("    fdasfsaas  ")[1]

分組交換

var rule = /(\d+)-(\d+)/;
"23-45".replace(rule,'$2-$1');

匹配模式

默認(rèn)是貪婪模式
非貪婪模式在量詞后邊加**?**

# 非貪婪
var rule = /(\d+?)/;

忽略分組

不希望捕獲某些分組霹粥,在分組內(nèi)加上?:
(?:Byron).(ok)
var rule = /(\d+)(?:[a-z])/;

反向引用

var rule = /(\d{3})-\1/

正向前瞻(條件過(guò)濾器)

  • [捕獲特定字符之前的字符][后邊為前的方向灭将,沒(méi)有反向后顧(可以模擬出來(lái))]
  • 正則表達(dá)式從文本頭部向尾部開始解析,文本尾部方向后控,成為"前"
  • 前瞻就是在正則表達(dá)式匹配到規(guī)則的時(shí)候宗侦,向前檢查是否符合斷言
  • 正向前瞻 exp(?=assert)
  • 負(fù)向前瞻 exp(?!assert)
var s = "Ubuntu 8.10 is a good OS. Ubuntu 9.10 xxx";
var rule = /([a-z]+)(?=\s+8\.10)/i;
s.replace(rule, 'Debian');
var rule = /[a-z]+(\s+8\.10)/gi;
s.replace(rule, 'Debian$1');    //Debian 8.10 is a good OS. Ubuntu 9.10 xxx

對(duì)象屬性[只讀]

  • global:是否是全文搜索,默認(rèn)false
  • ingore case:是否大小寫敏感忆蚀,默認(rèn)是false
  • multiline:多行搜索矾利,默認(rèn)值是false
  • lastIndex:是當(dāng)前表達(dá)式匹配內(nèi)容的最后一個(gè)字符的下一個(gè)位置[有全局屬性g時(shí)才有效,其他情況默認(rèn)為0]
  • source:正則表達(dá)式的文本字符串
  • index匹配字符串的開始位置

邊界匹配字符

\b 單詞邊界
\B 非單詞邊界

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末馋袜,一起剝皮案震驚了整個(gè)濱河市男旗,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌欣鳖,老刑警劉巖察皇,帶你破解...
    沈念sama閱讀 222,252評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡什荣,警方通過(guò)查閱死者的電腦和手機(jī)矾缓,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,886評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)稻爬,“玉大人嗜闻,你說(shuō)我怎么就攤上這事∥Τ” “怎么了琉雳?”我有些...
    開封第一講書人閱讀 168,814評(píng)論 0 361
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)友瘤。 經(jīng)常有香客問(wèn)我翠肘,道長(zhǎng),這世上最難降的妖魔是什么辫秧? 我笑而不...
    開封第一講書人閱讀 59,869評(píng)論 1 299
  • 正文 為了忘掉前任束倍,我火速辦了婚禮,結(jié)果婚禮上盟戏,老公的妹妹穿的比我還像新娘肌幽。我一直安慰自己,他們只是感情好抓半,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,888評(píng)論 6 398
  • 文/花漫 我一把揭開白布喂急。 她就那樣靜靜地躺著,像睡著了一般笛求。 火紅的嫁衣襯著肌膚如雪廊移。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,475評(píng)論 1 312
  • 那天探入,我揣著相機(jī)與錄音狡孔,去河邊找鬼。 笑死蜂嗽,一個(gè)胖子當(dāng)著我的面吹牛苗膝,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播植旧,決...
    沈念sama閱讀 41,010評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼辱揭,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了病附?” 一聲冷哼從身側(cè)響起问窃,我...
    開封第一講書人閱讀 39,924評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎完沪,沒(méi)想到半個(gè)月后域庇,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體嵌戈,經(jīng)...
    沈念sama閱讀 46,469評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,552評(píng)論 3 342
  • 正文 我和宋清朗相戀三年听皿,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了熟呛。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,680評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡尉姨,死狀恐怖庵朝,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情啊送,我是刑警寧澤,帶...
    沈念sama閱讀 36,362評(píng)論 5 351
  • 正文 年R本政府宣布欣孤,位于F島的核電站馋没,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏降传。R本人自食惡果不足惜篷朵,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,037評(píng)論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望婆排。 院中可真熱鬧声旺,春花似錦、人聲如沸段只。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,519評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)赞枕。三九已至澈缺,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間炕婶,已是汗流浹背姐赡。 一陣腳步聲響...
    開封第一講書人閱讀 33,621評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留柠掂,地道東北人项滑。 一個(gè)月前我還...
    沈念sama閱讀 49,099評(píng)論 3 378
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像涯贞,于是被迫代替她去往敵國(guó)和親枪狂。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,691評(píng)論 2 361

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