?正則表達式的模式匹配
1仪或、正則表達式(Regular Expression -RegExp)是一個描述字符模式的對象甩骏,JS中的RegExp類表示正則表達式,可以進行模式匹配和文本檢索以及替換等功能卧波,如表單驗證铭拧、頁面輸出格式化等等
2赃蛛、創(chuàng)建正則表達式RegExp對象
????????直接量語法:/hello/ig
????關(guān)鍵字:new RegExp('hello','ig')
3恃锉、RegExp的屬性
????global(只讀):判斷是否具有g(shù)修飾符(全局)
????ignoreCase(只讀):是否具有i修飾符(忽略大小寫)
????multiline(只讀):多行
????lastIndex:上次匹配索引
????source(只讀):正則所使用文本,
????$1...$9:(全局屬性)代表之前匹配得到的文本
4呕臂、RegExp方法
????test(str):檢測str是否匹配相關(guān)的正則表達式破托,返回布爾值
????exec(str):檢索str是否匹配相關(guān)的正則表達式,返回找到的值歧蒋,并確定其位置土砂;影響lastIndex的值
????compile():編譯正則表達式,將pattern轉(zhuǎn)換為內(nèi)部的格式谜洽,加快執(zhí)行速度
和正則配合使用的字符串方法
1萝映、替換字符串replace(substr/regexp,replaceStr)
????原始字符串內(nèi)容不會改變
2、匹配:match(substr/regexp)
????可在字符串內(nèi)檢索指定的值阐虚,或找到一個或多個與正則表達式匹配的子串
????若無匹配返回null
????若有匹配返回數(shù)組序臂,當僅有一個匹配項,第一項為匹配子串实束,索引'index'指出匹配的位置奥秆,索引'input'指出要檢測的字符串;若有多項匹配則數(shù)組由所有匹配項組成
3咸灿、查找:search(str/regexp)
????返回第一個匹配子串的起始位置
????此方法不支持全局匹配构订,將忽略標識符g
4、定義正則表達式
? ? a避矢、普通字符 \ipod\
? ? b悼瘾、需要使用轉(zhuǎn)義符的字符: . \/ * ? + [ ( ] ) { } ^ $ | /\.\?\*/
? ? c、匹配字符集
????????[abc] 匹配指定集合內(nèi)任一個字符:/[abc123]/
? ????? [^abc] 匹配不再指定集合內(nèi)的任意字符
????????[0-9] 指定范圍谷异,匹配數(shù)字
????????[a-z] 匹配小寫字母
????????[A-Z] 匹配大寫字母
????????[A-z] 匹配大寫A到小寫z之間所有字符:A-Z[\]^_`a-z
? ? d分尸、預(yù)定義字符集
????????? \d 匹配一個數(shù)字:/\d/ 等價于/[0-9]/
????????? \D 匹配一個非數(shù)字:/\D/等價于/[^0-9]/
????????? \w匹配一個數(shù)字/字母/下劃線 等價于/[A-Za-z0-9_]/
????????? \W匹配一個非數(shù)字/字母/下劃線 等價于
? ? ? ? ?/[^A-Za-z0-9_]/
????????? \s 匹配一個空白字符(space),/\s/等價于/[ \n\r\t\v\f]/
????????? \S 匹配一個非空白符?/\S/等價于/[^\n\r\t\v\f]/
? ? ? ? ? . 匹配除了回車和換行外的任何單個字符,/./等價于/[^\n\r]/
? ? e歹嘹、數(shù)量詞
????????n? 匹配零次或一次字符n
????????n*:匹配零次或多次字符n >=0次
????????n+:匹配一次貨多次字符n >=1次
????????n{x}:匹配字符n出現(xiàn)x次
????????n{x,y}:匹配字符n出現(xiàn)x到y(tǒng)次
????????n{x,}:匹配字符n出現(xiàn)>=x次
? ? f、選擇和分組
????????exp1|exp2 使用|進行條件選擇/ex|Ex|post|Post/
????????(exp1)使用()指定分組---自表達式
? ? g孔庭、指定匹配位置
????????^ 匹配字符串開頭 /^a/
????????$ 匹配字符串的結(jié)尾
? ? ? ? \b匹配單詞邊界
? ? ? ? ?\B:匹配非單詞邊界
?????????=x 正向前瞻尺上,匹配其后緊接著x的字符串
?????????!=x 后面不能有x