正規表示式的知識點分類彙總

2021-08-09 13:13:07 字數 3617 閱讀 1286

\ 做為轉意

量詞:* 匹配前面元字元0次或多次,/ba*/將匹配b,ba,baa,baaa (+和?)

+ 匹配前面元字元1次或多次,/ba*/將匹配ba,baa,baaa 

? 匹配前面元字元0次或1次,/ba*/將匹配b,ba 

精確匹配n次 

匹配n次及以上,至少 

匹配n到m次 

x|y 匹配x或y 

[xyz] 字符集(character set),匹配這個集合中的任一乙個字元(或元字元) 

[^xyz] 不匹配這個集合中的任何乙個字元 

(x) 匹配x儲存x在名為$1...$9的變數中 

[\b] 匹配乙個退格符 

任意字元

邊界匹配字元

\b 匹配乙個單詞的邊界 

\b 匹配乙個單詞的非邊界 

^ 匹配乙個輸入或一行的開頭,/^a/匹配"an a",而不匹配"an a" 

$ 匹配乙個輸入或一行的結尾,/a$/匹配"an a",而不匹配"an a" 

\cx 這兒,x是乙個控制符,/\cm/匹配ctrl-m 

\d 匹配乙個字數字元,/\d/ = /[0-9]/ 

\d 匹配乙個非字數字元,/\d/ = /[^0-9]/ 

\n 匹配乙個換行符 

\r 匹配乙個回車符 

\s 匹配乙個空白字元,包括\n,\r,\f,\t,\v等 

\s 匹配乙個非空白字元,等於/[^\n\f\r\t\v]/ 

\t 匹配乙個製表符 

\v 匹配乙個重直製表符 

\w 匹配乙個可以組成單詞的字元(alphanumeric,這是我的意譯,含數字),包括下劃線,如[\w]匹配"$5.98"中的5,等於[a-za-z0-9_] 

\w 匹配乙個不可以組成單詞的字元,如[\w]匹配"$5.98"中的$,等於[^a-za-z0-9]。

regexp

物件:

1.字面量 var reg=/\bis\b/g; var reg=/\bis\b/gi;

2.建構函式

var reg = newregexp('\\bis\\b','g');引數是字串

物件的屬性:reg.golbal,reg. ignorecase,reg. multiline,

reg.lastindex:匹配的內容最最後乙個單詞的下乙個位置(如果是非全域性呼叫(g)的話,為0)

reg.source:正規表示式的文字字串』\d』

regexp

物件本身的方法(

prototype)

regexp.prototype.text(str),返回true/false

var reg=/\w/g;

while(reg.test('abc'))

regexp.prototype.exec(str),  ,

此陣列的第

0 個元素是與正規表示式相匹配的文字,第

1 個元素是與

regexpobject

的第1

個子表示式相匹配的文字(如果有的話),第

2 個元素是與

regexpobject

的第2

個子表示式相匹配的文字(如果有的話),以此類推。 當

regexpobject

是乙個全域性正規表示式時,

exec()

的行為就稍微複雜一些。它會在

regexpobject

的lastindex

屬性指定的字元處開始檢索字串

string

。當exec()

找到了與表示式相匹配的文字時,在匹配後,它將把

regexpobject

的lastindex

屬性設定為匹配文字的最後乙個字元的下乙個位置。這就是說,您可以通過反覆呼叫

exec()

方法來遍歷字串中的所有匹配文字。當

exec()

再也找不到匹配的文字時,它將返回

null

,並把lastindex

屬性重置為0。

字串的原型方法

:(serch,match,replace,replaceall) 如果

regexp

沒有標誌

g,那麼

match()

方法就只能在

stringobject

中執行一次匹配。如果沒有找到任何匹配的文字,

match()

將返回null

,和exec一樣

如果regexp

具有標誌g,則

match()

方法將執行全域性檢索,找到

stringobject

中的所有匹配子字串。若沒有找到任何匹配的子串,則返回

null

。如果找到了乙個或多個匹配子串,則返回乙個陣列。不過全域性匹配返回的陣列的內容與前者大不相同,它的陣列元素中存放的是

stringobject

中所有的匹配子串,而且也沒有

index

屬性或input

屬性。 如:

var str="1 plus 2 equal 3"

document.write(str.match(/\d+/g))//

1,2,3

stringobject.replace(regexp/substr,replacestr/function);

name = "doe, john";

name.replace(/(\w+)\s*,\s*(\w+)/, "$2$1");//"john doe"

name = 'aaa bbb ccc';

uw=name.replace(/\b\w+\b/g, function(word)

);function有四個引數:

修飾符(可以放在一起同時使用)

g:global,全文搜尋,不新增,搜到第乙個匹配就停止

i: ignore case,忽略大小寫,正則預設大小寫敏感

m: multiple lines多行搜尋,把換行符當成新的一行

如:『@aa

@bb@cc』.replace(/^@\w/gm,』x』)

貪婪模式:,匹配三到六次中取盡可能多的匹配,即預設匹配六次

非貪婪模式:在量詞後面加上?即變成非貪婪模式,盡可能少的匹配

只匹配三位,而不是五位

分組 使用()來分組,使量詞作用於分組

(breqe) 和breqe

或| :可以將整個正規表示式進行或,如

breqe|adfasdfa:

如果不想作用於整個表示式,可以用分組進行隔絕:

bre(asa|sqd)asdf:

反向引用:

每個分組對應著$1到$n

忽略分組:

bre(asa|sqd)(asdf)

bre(?:asa|sqd)(asdf)

前瞻: 文字頭部向尾部解析,文字尾部是前,文字頭部是後,當正則匹配到時,繼續向前,即文字尾部檢查是否斷言。後顧/後瞻方向相反,js不支援後顧。

符合斷言的是正向匹配或肯定匹配,不符合的是否定匹配或者負向匹配

exp:正規表示式,assert:斷言

正規表示式知識點彙總

1 什麼是正規表示式?答 正規表示式是乙個特殊字串行,能幫助使用者檢查乙個字串是否與某種模式匹配,從而達成快速檢索或替換符合某個模式 規則的文字。2 re模組中的match函式和search方法怎麼使用,兩者的區別是什麼?答 match re.match函式只匹配字串開始的字元,如果開始的字元不符合...

正規表示式知識點

re.match與re.search的區別 re.match只匹配字串的開始,如果字串開始不符合正規表示式,則匹配失敗,函式返回none 而re.search匹配整個字串,直到找到乙個匹配。flags 標誌位,用於控制正規表示式的匹配方式,如 是否區分大小寫,多行匹配等等 import re s 1...

正規表示式知識點

正則的知識點 1.建立例項 var reg new regexp pattern,flag d g 2.flag 識別符號 1.i 忽略大小寫匹配 2.m 多行匹配 3.g 全域性匹配 應用與所有,而不是找到第乙個就停止 3.第一段知識點 1.xyz xyz中任意乙個字元 等價於 x z 2.xyz...