摘要:玩轉(zhuǎn)對象中的正則表達(dá)式的正則表達(dá)式語法極大地借鑒了另一種腳本語言的正則表達(dá)式語法對象是的一個內(nèi)置對象,與,類似。創(chuàng)建對象可通過構(gòu)造函數(shù)創(chuàng)建。當(dāng)要根據(jù)用戶輸入來構(gòu)造正則表達(dá)式時,必須采用構(gòu)造函數(shù)方式。如與被看做相同的字符模式。
玩轉(zhuǎn)javascript RegExp對象 js中的正則表達(dá)式
js的正則表達(dá)式語法極大地借鑒了另一種腳本語言Perl的正則表達(dá)式語法.
RegExp對象是js的一個內(nèi)置對象,與String,Array類似。
可通過構(gòu)造函數(shù)RegExp()創(chuàng)建。---當(dāng)要根據(jù)用戶輸入來構(gòu)造正則表達(dá)式時,必須采用構(gòu)造函數(shù)方式。
var re=new RegExp("","gi");
需要注意的是這個特殊字符在js中表示退格,在正則表達(dá)式中特殊字符之前需要再加一個反斜杠,因此變成了,正則表達(dá)式作為參數(shù)傳給RegExp()構(gòu)造函數(shù),屬性字符g,i,m作為構(gòu)造函數(shù)的第二個參數(shù).
可通過字面量語法創(chuàng)建,例:
var re=/dd/;
其中斜杠(/)表示正則表達(dá)式的開始和結(jié)束。告訴js,這是一個正則表達(dá)式,就像引號是字符串的開始和結(jié)束一樣的.
語法var patt=new RegExp(pattern,modifiers); 或者更簡單的方式: var patt=/pattern/modifiers;
pattern(模式) 描述了表達(dá)式的模式
modifiers(修飾符) 用于指定全局匹配、區(qū)分大小寫的匹配和多行匹配
G---全局匹配,查找所有與模式匹配的子串,而不是在找到第一個匹配的字符后就停止
I---模式不區(qū)分大小寫。如:Paul與paul被看做相同的字符模式。
m---多行標(biāo)志。制定特殊字符^和$可以匹配多行文本和字符串的開始和結(jié)束
正則表達(dá)式和String對象的split()-返回?cái)?shù)組,match-返回?cái)?shù)組,search()-返回索引,在正則表達(dá)式中也只能找到第一個匹配的字符組,全局匹配對它無效,replace()-替換結(jié)合使用才能發(fā)揮它的強(qiáng)大功能。
具體的正則表達(dá)式特殊字符就不在此列舉了(太多了)。
我們就舉幾個簡單的例子了解一下正則表達(dá)式的功能實(shí)現(xiàn)
實(shí)例1. 要匹配1-800-888-5474的電話號碼,使用正則表達(dá)式:
var a="1-800-888-5474"; var re=/d-d{3}-d{3}-d{4}/gi; var b=a.match(re); console.log("b:"+b);
后臺輸出b:1-800-888-5474,d{3}表示出現(xiàn)三個數(shù)字,{n}表示前一項(xiàng)出現(xiàn)n次,?表示前一項(xiàng)出現(xiàn)0次或1次
實(shí)例2.
var a="1997,1998,2000,2001,2002,2000,paul,paula,paulab,pau"; var b=a.match(/2000?1?2?/gi); var d=a.match(/paul?a?b?/gi); var e=a.replace(/2000?1?2?/gi,"2017") var f=a.replace(/paul?a?b?/gi,"room") console.log("b:"+b); console.log("d:"+d); console.log("e:"+e); console.log("f:"+f);
輸出結(jié)果如下:
示例中,
b:輸出19世紀(jì)的年份組成的數(shù)組
d:輸出所有含有pau字符組成的數(shù)組
e:把字符串中的19世紀(jì)年份全替換為2017年
f:把字符串中含有pau的字符串全部替換為room.
實(shí)例3. 位置字符,B的深入理解
var a="hello world,I am a girl."; var re1=//gi; var re2=/B/gi; var b=a.replace(re1,"|"); var c=a.replace(re2,"|"); console.log("b:"+b); console.log("c:"+c);
結(jié)果如下:
可以從結(jié)果中看出:的位置是在單詞的前后(單詞字符與非單詞字符之間的位置),B的位置在單詞的前后,除卻了位置,剩余的所有位置。
實(shí)例4. 正則表達(dá)式的分組
如何實(shí)現(xiàn)分組的,只需要將它們放在()中,正則表達(dá)式中的()是將字符模式組合起來的特殊字符,圓括號本身不是要匹配的字符。
如:
var s="javascript,vbscript and php";
要求用同一個正則表達(dá)式匹配javascript和vbscript.
var s="javascript,vbscript and php"; var re=/(vb|java)script/gi; s=s.replace(re,"aa"); alter(s);
其中|,是分組里面的特殊字符,和||(或)的含義是一樣的。
實(shí)例5:單引號替換雙引號
var re=/B"|"B/gi;
實(shí)例6:使用$引用分組
var a="2012,2013,2014" //把a(bǔ)修改為"2012年,2013年,2014年" var re=/(d{4})/gi; //就可以在替換的字符中使用序號1的分組了: a=a.replace(re,"$1年"); //輸出2012年,2013年,2014年。
還有其他的方法可以實(shí)現(xiàn),這個我覺得相對簡便一些,具體的用法還要在實(shí)際項(xiàng)目中使用。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/88420.html
摘要:讀這篇文章之前你需要掌握基本的知識,并且有安靜舒適的環(huán)境與寬裕的時間,文章有點(diǎn)長,你可以選擇備好或茶來慢慢學(xué)習(xí)。文章標(biāo)題有點(diǎn)夸大了,這是一篇正則表達(dá)式的入門文章。如有錯誤,歡迎指正。 讀這篇文章之前你需要掌握基本的JavaScript知識,并且有安靜舒適的環(huán)境與寬裕的時間,文章有點(diǎn)長,你可以選擇備好coffee或茶來慢慢學(xué)習(xí)。文章標(biāo)題有點(diǎn)夸大了,這是一篇正則表達(dá)式的入門文章。如有錯誤,...
摘要:選擇分組和引用正則表達(dá)式的語法還包括指定選擇項(xiàng)子表達(dá)式分組和引用前一子表達(dá)式的特殊字符。帶圓括號的表達(dá)式的另一個用途是允許在同一正則表達(dá)式的后部引用前面的子表達(dá)式。 正則表達(dá)式(regular expression)是一個描述字符模式的對象。JavaScript的 RegExp類 表示正則表達(dá)式,String和RegExp都定義了方法,后者使用正則表達(dá)式進(jìn) 行強(qiáng)大的模式匹配和文本檢索與...
摘要:四路由注冊構(gòu)造函數(shù)首先看了解一下構(gòu)造函數(shù)限制必須采用關(guān)鍵字服務(wù)器支持的請求方法,后續(xù)方法會用到保存前置處理函數(shù)存儲在構(gòu)造函數(shù)中初始化的和屬性最為重要,前者用來保存前置處理函數(shù),后者用來保存實(shí)例化的對象。 一、前言 ??Koa為了保持自身的簡潔,并沒有捆綁中間件。但是在實(shí)際的開發(fā)中,我們需要和形形色色的中間件打交道,本文將要分析的是經(jīng)常用到的路由中間件 -- koa-router。 ??...
摘要:本文內(nèi)容共正則表達(dá)式火拼系列正則表達(dá)式回溯法原理學(xué)習(xí)正則表達(dá)式,是需要懂點(diǎn)兒匹配原理的。正則表達(dá)式迷你書問世了讓幫你生成和解析參數(shù)字符串最全正則表達(dá)式總結(jié)驗(yàn)證號手機(jī)號中文郵編身份證地址等是正則表達(dá)式的縮寫,作用是對字符串執(zhí)行模式匹配。 JS 的正則表達(dá)式 正則表達(dá)式 一種幾乎可以在所有的程序設(shè)計(jì)語言里和所有的計(jì)算機(jī)平臺上使用的文字處理工具。它可以用來查找特定的信息(搜索),也可以用來查...
摘要:正則大法好,正則大法好,正則大法好,重要的事情說三遍。第二部分,這個部分是整個表達(dá)式的關(guān)鍵部分。學(xué)習(xí)正則如果還沒有系統(tǒng)學(xué)習(xí)正則表達(dá)式,這里提供一些網(wǎng)上經(jīng)典的教程供大家學(xué)習(xí)。正則表達(dá)式使用單個字符串來描述匹配一系列匹配某個句法規(guī)則的字符串。 原文收錄在我的 GitHub博客 (https://github.com/jawil/blog) ,喜歡的可以關(guān)注最新動態(tài),大家一起多交流學(xué)習(xí),共同...
閱讀 637·2021-11-22 15:32
閱讀 2725·2021-11-19 09:40
閱讀 2320·2021-11-17 09:33
閱讀 1277·2021-11-15 11:36
閱讀 1874·2021-10-11 10:59
閱讀 1485·2019-08-29 16:41
閱讀 1788·2019-08-29 13:45
閱讀 2156·2019-08-26 13:36