和正則表達式相關(guān)的方法和屬性:
RegExp對象的方法:
test,返回一個bool值,它指出在被查找的字符串中是否存在模式。如果存在返回 true ,否則返回 false .
exec, 用正則表達式模式在字符串中運行查找,并返回包含該查找結(jié)果的一個數(shù)組。
compile, 把正則表達式編譯為內(nèi)部格式,從而執(zhí)行更快。
RegExp對象的屬性:
source, 返回正則表達式模式的文本的復(fù)本,只讀。
lastIndex, 返回字符位置,它是被查找字符串中下一次成功匹配的開始位置。
$1...$9, 返回九個模式匹配期間查找的字符串,只讀。
input ($_),返回執(zhí)行規(guī)范表述查找的字符串,只讀。最好是這樣使用RegExp[ '$_' ]
lastMatch ($&),返回任何正則表達式搜索過程中的最后匹配的字符,只讀。
lastParen ($+),如果有的話,返回任何正則表達式查找過程中最后括的子匹配,只讀。
leftContext ($`),返回被查找的字符串從字符串開始位置到最后匹配之前的位置之間的字符,只讀。
rightContext ($ '),返回被搜索的字符串中從最后一個匹配位置開始到字符串結(jié)尾之間的字符。只讀。
string對象一些和正則表達式相關(guān)的方法:
match, 找到一個或多個正則表達式的匹配。
replace, 替換與正則表達式匹配的子串。
search, 檢索與正則表達式相匹配的值。
split, 把字符串分割為字符串?dāng)?shù)組。
var re=new RegExp(' a ');
var re=new RegExp(' a ',' i ');
RegExp構(gòu)造函數(shù)第一個參數(shù)為正則表達式的文本內(nèi)容,而第二個參數(shù)則為可選項標(biāo)志,標(biāo)志可以組合使用:
g, 全文查找
i, 忽略大小寫
m, 多行查找
創(chuàng)建正則表達式也可以簡寫為:
var re=/\d+/gi;
所有的元字符:當(dāng)要用到元字符本身時,要進行轉(zhuǎn)義。
( [ { \ ^ $ | ) ? * + .
貪婪匹配:re=/(\d+)0/; 表示匹配10,100,1000,10000等,能匹配多少就匹配多少。
惰性匹配:re=/(\d+)?0)/; 表示匹配10,返回最少匹配。
捕獲分組,加入() :re=/(\d+)([a-z])/;
非捕獲分組,加入?: :re=/(\d+)(?:[a-z])/;
候選|
re=/(if|else) \d/; 匹配if 3 或else 5
嵌套分組:
(A?(B?(C?)))
多外往內(nèi)產(chǎn)生三個分組。
反向引用
re=/(\d+)-(\d+)/;
s="12-34";
s.replace(re,"$2-$1");
re=/(\w+)\s\1/;
匹配go go或how how等。
正向前瞻:?=
re=/([a-z]+)(?=\s+8\.10)/gi;
s="Ubuntu 8.10";
s.replace(re,' Redtub') //結(jié)果為Redtub 8.10
負向前瞻:?!
re=/([a-z](?!\d))/i;
str= "abc 1 one" ;
re.test(str);
alert(RegExp.$1); //結(jié)果為one
一個復(fù)雜的例子:
構(gòu)建一個驗證電子郵箱地址有效性的正則表達式。電子郵箱地址有效性要求:用戶名只能包含
字母數(shù)字以及下劃線,最少一位,最多15位,用戶名后面緊跟@,后面是域名,域名名稱要求只
能包含字母數(shù)字和(-),并且不能以減號開頭和結(jié)尾,然后后面是域名后綴(可以有多個),
域名后綴必須是點號連上2-4位英文字母。
var re=/^\w{1,15}(?:@(?!-))(?:(?:[a-z0-9-]*(?:[a-z0-9](?!-))(?:\.(?!-))))+[a-z]{2,4}$/;
|