基礎(chǔ)正則表達(dá)式

什么是正則表達(dá)式? 在編寫處理字符串的程序或網(wǎng)頁(yè)時(shí),經(jīng)常會(huì)有查找符合某些復(fù)雜規(guī)則的字符串的需要。正則表達(dá)式就是用于描述這些規(guī)則的工具。換句話說(shuō),正則表達(dá)式就是記錄文本規(guī)則的代碼? ? ?

1.正則表達(dá)式的定義

RegExp() 對(duì)象 創(chuàng)建 第一種方法: var reg= new RegExp('\d+'); 第二種方法 var reg=/\d+/;

2.正則表達(dá)式的exec方法簡(jiǎn)介

語(yǔ)法:

reg.exec(str); 其中str為要執(zhí)行正則表達(dá)式的目標(biāo)字符串。

例如:

var reg = /test/;

var str = 'testString';

var result = reg.exec(str);

alert(result);

結(jié)果:將會(huì)輸出test,因?yàn)檎齽t表達(dá)式reg會(huì)匹配str(‘testString’)中的’test’子字 符串,并且將其返回。

1.正則表達(dá)式中的直接量字符

在正則表達(dá)式中所有的字母字符和數(shù)字都是按照字面意思與自身相匹配的.JavaScript的正則表達(dá)式還通過(guò)以反斜杠()開(kāi)頭的轉(zhuǎn)義序列支持某些非字母字符.例如,序列 "\n" 在字符串中匹配的是一個(gè)直接量換行符.在正則表達(dá)式中,許多標(biāo)點(diǎn)符號(hào)都有特殊的含義.

\f? ? 換頁(yè)符

\n? 換行符

\r? ? 回車

\t? ? 制表符

\v? ? 垂直制表符

\o? ? nul字符

2.正則表達(dá)式中的字符類

將單獨(dú)的直接符放進(jìn)中括號(hào)內(nèi)就可以組合成字符類.一個(gè)字符類和它所包含的任何一個(gè)字符都匹配,所以正則表達(dá)式 / [abc] / 和字母 "a" , "b" , "c" 中的任何一個(gè)都匹配.另外還可以定義否定字符類,這些類匹配的是除那些包含在中括號(hào)之內(nèi)的字符外的所有字符.定義否定字符尖時(shí),要將一個(gè) ^ 符號(hào)作為從左中括號(hào)算起的第一個(gè)字符.正則表達(dá)式的集合是 / [a-zA-z0-9] / .

[...] 位于括號(hào)之內(nèi)的任意字符 [^...] 不在括號(hào)之中的任意字符 . 除了換行符之外的任意字符,等價(jià)于[^\n] \w 任何單字字符, 等價(jià)于[a-zA-Z0-9] \W 任何非單字字符,等價(jià)于[^a-zA-Z0-9] \s 任何空白符,等價(jià)于[\ t \ n \ r \ f \ v] \S 任何非空白符,等價(jià)于[^\ t \ n \ r \ f \ v] \d 任何數(shù)字,等價(jià)于[0-9] \D 除了數(shù)字之外的任何字符,等價(jià)于[^0-9] 3.正則表達(dá)式中的重復(fù)

在剛剛學(xué)過(guò)的正則語(yǔ)法中,可以把兩位數(shù)描述成 / \ d \ d /,把四位數(shù)描述成 / \d \ d \ d \ d /.但我們還沒(méi)有一種方法可以用來(lái)描述具有任意多數(shù)位的數(shù)字或者是一個(gè)字符串.這個(gè)串由三個(gè)字符以及跟隨在字母之后的一位數(shù)字構(gòu)成.這些復(fù)雜的模式使用的正則表達(dá)式語(yǔ)法指定了該表達(dá)式中每個(gè)元素要重復(fù)出現(xiàn)的次數(shù).

{n, m} 匹配前一項(xiàng)至少n次,但是不能超過(guò)m次

{n, }? ? 匹配前一項(xiàng)n次,或者多次

{n}? ? ? 匹配前一項(xiàng)恰好n次

?? ? ? ? 匹配前一項(xiàng)0次或1次,也就是說(shuō)前一項(xiàng)是可選的. 等價(jià)于 {0, 1}

匹配前一項(xiàng)1次或多次,等價(jià)于{1,}

匹配前一項(xiàng)0次或多次.等價(jià)于{0,}

4.正則表達(dá)式中的選擇,分組和引用

| 選擇.匹配的要么是該符號(hào)左邊的子表達(dá)式,要么它右邊的子表達(dá)式 (...) 分組.將幾個(gè)項(xiàng)目分為一個(gè)單元.這個(gè)單元可由 *、+、?和|等符號(hào)使用,而 且還可以記住和這個(gè)組匹配的字符以供此后引用使用 \n 和第n個(gè)分組所匹配的字符相匹配.分組是括號(hào)中的子表達(dá)式(可能是嵌套的 ).分組號(hào)是從左到右計(jì)數(shù)的左括號(hào)數(shù)

5.指定匹配的位置

^ 匹配的是字符的開(kāi)頭,在多行檢索中,匹配的是一行的開(kāi)頭 $ 匹配的是字符的結(jié)尾,在多行檢索中,匹配的是一行的結(jié)尾 \b 匹配的是一個(gè)詞語(yǔ)的邊界.簡(jiǎn)而言之就是位于字符\w 和 \w之間的位置(注 意 :[\b]匹配的是退格符) \B 匹配的是非詞語(yǔ)的邊界的字符

6.正則表達(dá)式中的屬性

i 執(zhí)行大小寫不敏感的匹配 g 執(zhí)行一個(gè)全局的匹配,簡(jiǎn)而言之,就是找到所有的匹配,而不是在找到第一個(gè)之后就停止了

不區(qū)分大小寫修飾符I 形式:

/pattern/I

var reg = /b/;

var str = 'BBS';

console.info(reg.exec(str));返回null,因?yàn)榇笮懖环稀?/p>

var reg = /b/i;

var str = 'BBS';

console.info(reg.exec(str));

匹配到B,這個(gè)就是i修飾符的作用了。

常用的正則

"^\\d+$"  //非負(fù)整數(shù)(正整數(shù) + 0)

"^[0-9]*[1-9][0-9]*$"  //正整數(shù)

"^((-\\d+)|(0+))$"  //非正整數(shù)(負(fù)整數(shù) + 0)

"^-[0-9]*[1-9][0-9]*$"  //負(fù)整數(shù)

"^-?\\d+$"    //整數(shù)

"^\\d+(\\.\\d+)?$"  //非負(fù)浮點(diǎn)數(shù)(正浮點(diǎn)數(shù) + 0)

"^(([0-9]+\\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\\.[0-9]+)|([0-9]*[1-9][0-9]*))$"  //正浮點(diǎn)數(shù)

"^((-\\d+(\\.\\d+)?)|(0+(\\.0+)?))$"  //非正浮點(diǎn)數(shù)(負(fù)浮點(diǎn)數(shù) + 0)

"^(-(([0-9]+\\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\\.[0-9]+)|([0-9]*[1-9][0-9]*)))$"  //負(fù)浮點(diǎn)數(shù)

"^(-?\\d+)(\\.\\d+)?$"  //浮點(diǎn)數(shù)

"^[A-Za-z]+$"  //由26個(gè)英文字母組成的字符串

"^[A-Z]+$"  //由26個(gè)英文字母的大寫組成的字符串

"^[a-z]+$"  //由26個(gè)英文字母的小寫組成的字符串

"^[A-Za-z0-9]+$"  //由數(shù)字和26個(gè)英文字母組成的字符串

"^\\w+$"  //由數(shù)字、26個(gè)英文字母或者下劃線組成的字符串

"^[\\w-]+(\\.[\\w-]+)*@[\\w-]+(\\.[\\w-]+)+$"    //email地址

"^[a-zA-z]+://(\\w+(-\\w+)*)(\\.(\\w+(-\\w+)*))*(\\?\\S*)?$"  //url

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 初衷:看了很多視頻、文章,最后卻通通忘記了,別人的知識(shí)依舊是別人的,自己卻什么都沒(méi)獲得。此系列文章旨在加深自己的印...
    DCbryant閱讀 4,260評(píng)論 0 20
  • 推薦幾個(gè)正則表達(dá)式編輯器 Debuggex :https://www.debuggex.com/ PyRegex:...
    木易林1閱讀 11,857評(píng)論 9 151
  • 幾個(gè)正則表達(dá)式編輯器 Debuggex :https://www.debuggex.com/ PyRegex:ht...
  • 正則表達(dá)式到底是什么東西?字符是計(jì)算機(jī)軟件處理文字時(shí)最基本的單位,可能是字母,數(shù)字,標(biāo)點(diǎn)符號(hào),空格,換行符,漢字等...
    獅子挽歌閱讀 2,290評(píng)論 0 9
  • - 我愿從你的全世界路過(guò) - 那天,已經(jīng)很晚了。 秦瑤上身穿著一件諾大的白色的T恤,腳下踩著人字拖,頂著一頭雞窩發(fā)...
    霍小柒閱讀 431評(píng)論 0 8

友情鏈接更多精彩內(nèi)容