相關(guān)關(guān)鍵詞
關(guān)于我們
最新文章
- 拉動(dòng)懸浮于頂部的JS控制代碼
- 在JavaScript中構(gòu)建ArrayList示例代碼
- js使用for循環(huán)及if語(yǔ)句判斷多個(gè)一樣的name
- JavaScript中判斷原生函數(shù)檢查function是否是原生代碼
- jQuery CSS()方法改變現(xiàn)有的CSS樣式表
- JavaScript中判斷原生函數(shù)檢查function是否是原生代碼
- jQuery動(dòng)畫高級(jí)用法(上)——詳解animation中的.queue()函數(shù)
- python小技巧之批量抓取美女圖片
- JS中offsetTop、clientTop、scrollTop、offsetTop各屬性介紹
- JS獲取瀏覽器窗口大小 獲取屏幕,瀏覽器,網(wǎng)頁(yè)高度寬度
javascript正則表達(dá)式詳解(基礎(chǔ)篇)
javascript正則表達(dá)式詳解
定義:正則表達(dá)式是字符模式對(duì)象,也就是說(shuō)它是一個(gè)對(duì)象(RegExp);
作用:js最初的作用是進(jìn)行表單的驗(yàn)證,從而減輕服務(wù)器端的壓力和提升用戶的體驗(yàn)!而正則表達(dá)式在表單的驗(yàn)證中起到了極大的作用(當(dāng)然這絕不是唯一的作用),在項(xiàng)目中我也是經(jīng)常的用到,在這里就講解最基礎(chǔ)的正則表達(dá)式。
正則表達(dá)式的兩種表示方法:
1,對(duì)象表示法
var regExp = new RegExp('box','img');
第一個(gè)參數(shù)是需要匹配的字符串,第二個(gè)參數(shù)是模式修飾符,i:在匹配的過(guò)程中忽略大小寫;g:全局匹配(而不是匹配到一個(gè)目標(biāo)字符串便停下來(lái));m:多行匹配;
2,字面量表示方法
var regExp = /box/igm;后面的igm作用同上
正則表達(dá)式對(duì)象的兩個(gè)方法:
var regExp = /box/igm;
var str = "this is a box,that is a box too";
1,test方法
var bool = regExp.test(str);此時(shí)bool為true
它返回boolean值,如果匹配到字符串則返回true,如果沒(méi)有匹配到則返回false(這個(gè)方法很好使用,在項(xiàng)目中經(jīng)常用到);
2,exec方法
var arrResult = regExp.exec(str);此處的結(jié)果是一數(shù)組,數(shù)組中只有一個(gè)元素box;
該方法返回一個(gè)數(shù)組,而且不管是否開啟了全局匹配模式,該數(shù)組都只返回一個(gè)元素(這個(gè)有一個(gè)小小的bug,如果模式中用到了分組,那么情況就會(huì)改變,請(qǐng)看下面的例子),但是該數(shù)組有三個(gè)屬性,input整個(gè)的字符串參數(shù),this is a box,that is a box too;第二個(gè)參數(shù),index,返回匹配到的模式字符串的首字母的位置;lastIndex(該屬性在ie下面為undefined所以不做講解了);
var regExp = /(\w+)\s(\d+)/img;
var str = "google 2014";
var arr = regExp.exec(str);此時(shí)arr中的元素有三個(gè),第一個(gè)為google 2014,第二個(gè)為google第三個(gè)為2014
講解完這幾個(gè)方法之后就不得不講完字符串對(duì)象中的四個(gè)與正則表達(dá)式有關(guān)的方法,上面的兩個(gè)方法是正則表達(dá)式對(duì)象的方法,而接下來(lái)講解的方法則是字符串對(duì)象的方法:
1,match(patten);
var arrResult = str.match(regExp);此處返回的是一個(gè)數(shù)組,數(shù)組中含兩個(gè)box元素(因?yàn)檎齽t表達(dá)式模式修飾符中包含了g);有人說(shuō)正則表達(dá)式對(duì)象的exec是該方法的不要g的版本,我想說(shuō)的是這個(gè)是不正確的,因?yàn)樵摲椒ǚ祷氐臄?shù)組沒(méi)有input等屬性。
該方法返回?cái)?shù)組,如若沒(méi)匹配得到則方法null;數(shù)組的元素是多個(gè)的,在開啟全局模式且匹配到多個(gè)目標(biāo)時(shí);
2,search("regExp");
var index = str.search(regExp);此處返回10,因?yàn)榈谝粋€(gè)匹配到的目標(biāo)字符在字符串中的位置為10;
該方法返回目標(biāo)字符串的開始位置(匹配到的第一個(gè)),如果沒(méi)有匹配到則返回-1;該方法有一個(gè)特點(diǎn)就是模式修飾符加不加全局都是一樣的。該方法作用很大可以判斷某個(gè)字符串是否包含某個(gè)子串,在項(xiàng)目中也有很大的用途。
3,replace("regExp","str");
var str2 = str.replace(regExp,"bom");此處的結(jié)果str2的結(jié)果是this is a bom,that is bom too;
我想通過(guò)上面結(jié)果的公布你已經(jīng)對(duì)該方法有了深刻的了解;它就是用來(lái)替換字符串中的子串用的,第一個(gè)參數(shù)是正則表達(dá)式的模式,第二個(gè)是用來(lái)替換為該字符串的字符串。
4,split(regExp);
該方法我想大家都不陌生,它就是用來(lái)將字符串以某個(gè)模式轉(zhuǎn)換為數(shù)組用的,這里就不做詳細(xì)的解說(shuō)的,它很好用也很簡(jiǎn)單,與數(shù)組的join();方法相對(duì)應(yīng);
總結(jié)這四個(gè)方法:他們雖然可以用模式匹配作為參數(shù),當(dāng)然他們也可以用字符串作為參數(shù)
項(xiàng)目經(jīng)驗(yàn)總結(jié):
在項(xiàng)目中遇到過(guò)很多的正則表達(dá)式的使用,但是大多都是進(jìn)行簡(jiǎn)單的表單驗(yàn)證,所以這些最基礎(chǔ)但是最實(shí)用的方法和技術(shù)需要你牢牢地掌握,它能給你帶來(lái)很大的好處;