【JavaScript】正則表達式

JavaScript中用RegExp對象表示正則表達式殿较,可以用RegExp()構(gòu)造函數(shù)來創(chuàng)建正則表達式御滩,不過更多時候是用對象直接量來創(chuàng)建
如:var re = /s$/;這個正則表達式可以匹配以字符s結(jié)尾的字符串

1.字符類###

把字符放進方括號就變成了字符類闸婴,一個字符類可以匹配它所包含的任意字符嘿歌。
如:/[abc]/與字母a绊困、b琼腔、c中的任意一個都匹配寞秃。
常見字符類
[abc] 方括號內(nèi)任意字符
[^abc] 不在方括號內(nèi)的任意字符
. 除換行符和其他Unicode行終止符之外的任意字符
\w 任何ASCII字符組成的單詞斟叼,等價于[a-zA-Z0-9]
\W 任何不是ASCII字符組成的單詞,等價于[^a-zA-Z0-9]
\s 任何Unicode空白符
\d 任何ASCII數(shù)字

2.重復###

{n,m} 匹配前一項至少n次春寿,至多m次
{n,}   匹配前一項n次或更多次
{n}  匹配前一項n次
?   匹配前一項0次或1次
+   匹配前一項1次或多次
*   匹配前一項0次或多次

栗子:
/\d{2,4}/ 匹配2-4個數(shù)字
/\w{3}\d? 匹配3個字符和一個可選的數(shù)字

3.分組###

字符”|“用于分隔供選擇的字符朗涩,如/ab|cd|ef/可匹配字符串”ab“,也可匹配”cd“,還可匹配”ef“绑改。
圓括號"()"可用于把單獨的項組合成子表達式

4.修飾符###

修飾符放在"/"之外谢床,用語說明匹配模式兄一。JavaScript支持三種修飾符
i????執(zhí)行不區(qū)分大小寫的匹配
g???執(zhí)行全局匹配,即找到所有的匹配识腿,而不是在找到第一個后就停止
m??執(zhí)行多行匹配出革。在這種模式下,如果被檢索的字符串包含多行渡讼,^和$分別匹配每一行的開頭和結(jié)束

5.指定匹配位置###

^ 匹配字符串的開頭
$ 匹配字符串的結(jié)尾
\b 匹配單詞的邊界
(?=p) 零寬正向先行斷言骂束,要求接下來的字符都與p匹配
(?!p) 零寬負向先行斷言,要求接下來的字符都不與p匹配
/Java(?!Script)/g匹配以“Java”開頭硝全,但接下來的字符不是“Script”的字符串

5.RegExp對象###

  • RegExp對象的屬性
    source:只讀的字符串栖雾,包含正則表達式的源文本
    lastIndex:一個可讀寫的整數(shù),如果匹配模式帶有g(shù)修飾符伟众,這個屬性用于存儲下次匹配的起始位置析藕。
  • RegExp對象的方法
    exec():檢索字符串中指定的值。如果找到匹配的值凳厢,返回一個結(jié)果數(shù)組账胧,并確定其位置。如果沒有找到匹配的值先紫,就返回null
var str = 'Hello World';
var re = /Wo/g;
var result = re.exec(str);
if(result != null){
    console.log('Find '+result+' at '+result.index);//輸出Find Wo at 6
    console.log('next search begin at '+re.lastIndex);//輸出next search begin at 8
}

test():參數(shù)是一個字符串治泥,如果成功匹配,返回true遮精;如果沒有匹配到結(jié)果居夹,返回false

6.支持正則表達式的String對象的方法###

String對象支持4種使用正則表達式的方法。

  • search():參數(shù)是一個正則表達式本冲,返回一個與之匹配的子串的起始位置准脂,如果找不到子串,返回-1檬洞。
  • replace():執(zhí)行檢索和替換狸膏。第一個參數(shù)是一個正則表達式,第二個參數(shù)是一個內(nèi)容為替換文本的字符串添怔。
//將Lebron James替換為James Lebron
var name = 'Lebron James';
var result = name.replace(/(\w+)\s*\s*(\w+)/g,'$2 $1');
console.log(result);
  • match():唯一參數(shù)是一個正則表達式湾戳,返回一個由匹配結(jié)果組成的數(shù)組。
//匹配出字符串中的數(shù)字广料,將其保存到一個數(shù)組中
var str = 'rgb(237,13,235)';
var result = str.match(/\d+/g);
console.log(result);//輸出["237", "13", "235"]
  • split():將調(diào)用它的字符串拆分成一個子串組成的數(shù)組砾脑。第一個參數(shù)可以是字符串或者正則表達式,第二個可選參數(shù)可以指定返回數(shù)組的最大長度性昭。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末拦止,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌汹族,老刑警劉巖萧求,帶你破解...
    沈念sama閱讀 218,858評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異顶瞒,居然都是意外死亡夸政,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,372評論 3 395
  • 文/潘曉璐 我一進店門榴徐,熙熙樓的掌柜王于貴愁眉苦臉地迎上來守问,“玉大人,你說我怎么就攤上這事坑资『呐粒” “怎么了?”我有些...
    開封第一講書人閱讀 165,282評論 0 356
  • 文/不壞的土叔 我叫張陵袱贮,是天一觀的道長仿便。 經(jīng)常有香客問我,道長攒巍,這世上最難降的妖魔是什么嗽仪? 我笑而不...
    開封第一講書人閱讀 58,842評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮柒莉,結(jié)果婚禮上闻坚,老公的妹妹穿的比我還像新娘。我一直安慰自己兢孝,他們只是感情好窿凤,可當我...
    茶點故事閱讀 67,857評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著跨蟹,像睡著了一般卷玉。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上喷市,一...
    開封第一講書人閱讀 51,679評論 1 305
  • 那天,我揣著相機與錄音威恼,去河邊找鬼品姓。 笑死,一個胖子當著我的面吹牛箫措,可吹牛的內(nèi)容都是我干的腹备。 我是一名探鬼主播,決...
    沈念sama閱讀 40,406評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼斤蔓,長吁一口氣:“原來是場噩夢啊……” “哼植酥!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,311評論 0 276
  • 序言:老撾萬榮一對情侶失蹤友驮,失蹤者是張志新(化名)和其女友劉穎漂羊,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體卸留,經(jīng)...
    沈念sama閱讀 45,767評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡走越,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了耻瑟。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片旨指。...
    茶點故事閱讀 40,090評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖喳整,靈堂內(nèi)的尸體忽然破棺而出谆构,到底是詐尸還是另有隱情,我是刑警寧澤框都,帶...
    沈念sama閱讀 35,785評論 5 346
  • 正文 年R本政府宣布搬素,位于F島的核電站,受9級特大地震影響瞬项,放射性物質(zhì)發(fā)生泄漏蔗蹋。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,420評論 3 331
  • 文/蒙蒙 一囱淋、第九天 我趴在偏房一處隱蔽的房頂上張望猪杭。 院中可真熱鬧,春花似錦妥衣、人聲如沸皂吮。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,988評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蜂筹。三九已至,卻和暖如春芦倒,著一層夾襖步出監(jiān)牢的瞬間艺挪,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,101評論 1 271
  • 我被黑心中介騙來泰國打工兵扬, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留麻裳,地道東北人。 一個月前我還...
    沈念sama閱讀 48,298評論 3 372
  • 正文 我出身青樓器钟,卻偏偏與公主長得像津坑,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子傲霸,可洞房花燭夜當晚...
    茶點故事閱讀 45,033評論 2 355

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