JavaScript中的正則表達(dá)式簡明總結(jié)
一、定義正則表達(dá)式的方法
定義正則表達(dá)式的方法有兩種:構(gòu)造函數(shù)定義和正則表達(dá)式直接量定義。例如:
var reg2 = /\d{5, 12}/; // 通過直接量定義
正則表達(dá)式直接量字符
\o:NUL字符(\u0000)
\t:制表符(\u0009)
\n:換行符(\u000A)
\v:垂直制表符(\u000B)
\f:換頁符(\u000C)
\r:回車符(\u000D)
\xnn:由十六進(jìn)制數(shù)nn指定的拉丁字符,例如,\x0A等價(jià)于\n
\uxxxx:由十六進(jìn)制數(shù)xxxx指定的Unicode字符,例如\u0009等價(jià)于\t
\cX:控制字符^X,例如,\cJ等價(jià)于換行符\n
正則表達(dá)式錨字符
^:匹配字符串的開頭,在多行檢索中,匹配一行的開頭
$:匹配字符串的結(jié)尾,在多行檢索中,匹配一行的結(jié)尾
\b:匹配一個(gè)單詞的邊界,簡言之,就是位于字符\w和\W之間的位置,或位于字符\w和字符串的開頭或者結(jié)尾之間的位置([\b]匹配的是退格符)
\B:匹配非單詞邊界的位置
(?=p):零寬正向先行斷言,要求接下來的字符都與p匹配,但不能包括匹配p的那些字符
(?!p):零寬負(fù)向先行斷言,要求接下來的字符串不與p匹配
正則表達(dá)式的字符類
[...]:方括號(hào)內(nèi)的任意字符
[^...]:不在方括號(hào)內(nèi)的任意字符
.:除換行符和其他Unicode行終止符之外的任意字符
\w:任何ASCII字符組成的單詞,等價(jià)于[a-zA-Z0-9]
\W:任何不是ASCII字符組成的單詞,等價(jià)于[^a-zA-Z0-9]
\s:任何Unicode空白符
\S:任何非Unicode空白符的字符,注意\w和\S不同
\d:任何ASCII數(shù)字,等價(jià)于[0-9]
\D:除了ASCII數(shù)字之外的任何字符,等價(jià)于[^0-9]
[\b]:退格直接量(特例)
正則表達(dá)式的重復(fù)字符語法
{n, m}:匹配前一項(xiàng)至少n次,但不能超過m次
{n, }:匹配前一項(xiàng)n次或者更多次
{n}:匹配前一項(xiàng)n次
?:匹配前一項(xiàng)0次或者1次,也就是說前一項(xiàng)是可選的,等價(jià)于{0, 1}
+:匹配前一項(xiàng)1次或多次,等價(jià)于{1, }
*:匹配前一項(xiàng)0次或多次,等價(jià)于{0, }
正則表達(dá)式的選擇、分組和引用字符
|:選擇,匹配的是該符號(hào)左邊的子表達(dá)式或右邊的子表達(dá)式
(…):組合,將幾個(gè)項(xiàng)組合為一個(gè)單元,這個(gè)單元可通過“*”、“+”、“?”和“|”等符號(hào)加以修飾,而且可以記住和這個(gè)組相匹配的字符串以供此后的任何使用
(?: …):只組合,把項(xiàng)組合到一個(gè)單元,但是不記憶與改組相匹配的字符
\n:和第n個(gè)分組第一次匹配的字符相匹配,組是圓括號(hào)中的子表達(dá)式(也有可能是嵌套的),組索引是從左到右的左括號(hào)數(shù),“(?:”形式的分組不編碼
正則表達(dá)式修飾符
i:執(zhí)行不區(qū)分大小寫的匹配
g:執(zhí)行一個(gè)全局匹配,簡言之,即找到所有的匹配,而不是在找到第一個(gè)之后就停止
m:多行匹配模式,^匹配一行的開頭和字符串的開頭,$匹配行的結(jié)尾和字符串的結(jié)尾
用于模式匹配的String方法
search():它的參數(shù)是一個(gè)正則表達(dá)式,返回第一個(gè)與之匹配的子串的起始位置,如果沒有匹配的子串就返回-1。如果search()的參數(shù)不是正則表達(dá)式,則首先會(huì)通過RegExp構(gòu)造函數(shù)將它轉(zhuǎn)換為正則表達(dá)式,search()不支持全局檢索,因?yàn)樗雎孕揎椃鹓。如:
var s = "JavaScript".search(/script/i); // s = 4
replace():它用來執(zhí)行檢索與替換。接收兩個(gè)參數(shù),第一個(gè)是正則表達(dá)式,第二個(gè)是要進(jìn)行替換的字符串。正則表達(dá)式如果設(shè)置的修飾符g,則進(jìn)行全局替換,否則只替換匹配的第一個(gè)子串。如果第一個(gè)參數(shù)不是正則表達(dá)式,則直接搜索該字符串,而不是將其轉(zhuǎn)換為正則表達(dá)式。如:
match():它的參數(shù)是一個(gè)正則表達(dá)式,如果不是則通過RegExp轉(zhuǎn)換,返回的是一個(gè)由匹配結(jié)果組成的數(shù)組。如果設(shè)置了修飾符g則進(jìn)行全局匹配。如:
split():這個(gè)方法用以將調(diào)用它的字符串拆分為一個(gè)子串組成的數(shù)組,使用的分隔符是split()的參數(shù),它的參數(shù)也可以使一個(gè)正則表達(dá)式。如:
var d = '21 , 123, 44, 64, 67, 3'.split(/\s*,\s*/); // d = ["21", "123", "44", "64", "67", "3"]
二、RegExp對(duì)象
每個(gè)RegExp對(duì)象都有5個(gè)屬性。屬性source是一個(gè)只讀字符串,包含正則表達(dá)式的文本。屬性global是一個(gè)只讀布爾值,用以說明這個(gè)正則表達(dá)式是否帶有修飾符g。屬性ignoreCase是一個(gè)只讀布爾值,用以說明這個(gè)正則表達(dá)式是否帶有修飾符i。屬性multiline是一個(gè)只讀布爾值,用以說明這個(gè)正則表達(dá)式是否帶有修飾符m。屬性lastIndex是一個(gè)可讀可寫的整數(shù),如果匹配模式帶有g(shù)修飾符,這個(gè)屬性存儲(chǔ)整個(gè)字符串中下一次檢索的開始位置。
RegExp對(duì)象有兩個(gè)方法。exec()的參數(shù)是一個(gè)字符串,它的功能與match()相似,exec()方法對(duì)一個(gè)指定的字符串執(zhí)行一個(gè)正則表達(dá)式,也就是在一個(gè)字符串中執(zhí)行匹配檢索。如果沒有找到任何匹配就返回null,找到了匹配就返回一個(gè)數(shù)組,這個(gè)數(shù)組的第一個(gè)元素包含的是與正則表達(dá)式相匹配的字符串,余下的元素是與圓括號(hào)內(nèi)的子表達(dá)式相匹配的子串,不論正則表達(dá)式是否有修飾符g,都會(huì)返回一樣的數(shù)組。當(dāng)調(diào)用exec()的正則表達(dá)式對(duì)象具有修飾符g時(shí),它將把當(dāng)前正則表達(dá)式對(duì)象的lastIndex屬性設(shè)置為緊挨著匹配子串的字符位置。當(dāng)同一個(gè)正則表達(dá)式第二次調(diào)用exec()時(shí),它將從lastIndex屬性所指示的字符串處開始檢索,如果exec()沒有發(fā)現(xiàn)任何匹配結(jié)果,它會(huì)將lastIndex重置為0。如:
var text = "JavaScript is more fun than Java!"
var r;
while((r = p.exec(text)) != null) {
console.log(r, 'lastIndex: ' + p.lastIndex);
}
另外一個(gè)方法是test(),它的參數(shù)是一個(gè)字符串,用test()對(duì)某個(gè)字符串進(jìn)行檢查,如果包含正則表達(dá)式的一個(gè)匹配結(jié)果,則返回true否則返回false。如:
p.test('javascript'); // true
- javascript使用正則表達(dá)式檢測IP地址
- javascript學(xué)習(xí)筆記(八)正則表達(dá)式
- javascript正則表達(dá)式參數(shù)/g與/i及/gi的使用指南
- PHP和javascript常用正則表達(dá)式及用法實(shí)例
- JavaScript利用正則表達(dá)式去除日期中的“-”
- 刪除javascript中注釋語句的正則表達(dá)式
- JavaScript利用正則表達(dá)式去除日期中的-
- javascript常用的正則表達(dá)式實(shí)例
- 如何實(shí)現(xiàn)正則表達(dá)式的JavaScript的代碼高亮
- javascript正則表達(dá)式之search()用法實(shí)例
相關(guān)文章
javascript 基礎(chǔ)簡介 適合新手學(xué)習(xí)
在網(wǎng)絡(luò)或書籍所說的JavaScript大部分指客戶端JavaScript。2009-09-09javascript中聲明函數(shù)的方法及調(diào)用函數(shù)的返回值
這篇文章主要介紹了javascript中聲明函數(shù)的方法及調(diào)用函數(shù)時(shí)的返回值,示例如下,不了解的方法可以參考下2014-07-07javascript少兒編程關(guān)于返回值的函數(shù)內(nèi)容
在本篇文章中我們給大家整理了兒童學(xué)習(xí)JS中關(guān)于返回值的函數(shù)的相關(guān)內(nèi)容知識(shí)點(diǎn),對(duì)此有興趣的參考下。2018-05-05JavaScript中Number.NEGATIVE_INFINITY值的使用詳解
這篇文章主要介紹了JavaScript中Number.NEGATIVE_INFINITY值的使用,是JS入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下2015-06-06