\ 做為轉意
量詞:* 匹配前面元字元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...