欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

javascript的正則匹配方法學(xué)習(xí)

 更新時(shí)間:2016年02月24日 14:48:46   作者:chenmouren  
這篇文章主要為大家詳細(xì)介紹了javascript的正則匹配方法,幫助大家更快更高效的學(xué)習(xí)javascript正則的相關(guān)內(nèi)容,感興趣的小伙伴們可以參考一下

javascript中正則匹配有3個(gè)方法,match,exec,test。這些方法都跟字符串和RegExp對(duì)象有關(guān),但使用場(chǎng)景不一樣,容易混淆。match是字符串的一個(gè)方法,接收一個(gè)RegExp對(duì)象做為參數(shù),其他的是RegExp對(duì)象的方法,接收一個(gè)字符串參數(shù)。

var str = 'abcdef12ab34cd56ef';
var patt = new RegExp('ab'); //主意是非全局匹配

var ret_test = patt.test(str);
console.log(ret_test);
var ret_match = str.match(patt);
console.log(ret_match);
var ret_exec = patt.exec(str);
console.log(ret_exec);

1. regExp.test(string)

  該方法最簡(jiǎn)單,在string中找到匹配regExp的字符串則返回true,沒(méi)找到匹配的字符串則返回false

2. regExp.exec(string)

  該方法稍微復(fù)雜些。

  當(dāng)regExp沒(méi)有全局標(biāo)志時(shí),其返回值為字符串?dāng)?shù)組:數(shù)組的第0號(hào)元素為剛匹配到的字符串,如果regExp有子表達(dá)式,則數(shù)組第1號(hào)元素為regExp的第一個(gè)子表達(dá)式,第2號(hào)元素為regExp的第二個(gè)字表達(dá)式...以此類(lèi)推。在上例中如果 patt = new RegExp('f(\\d)(\\d)','g');則 ret_exec 將為字符串?dāng)?shù)組:['f12','1','2']。

  當(dāng)regExp有全局標(biāo)志(g選項(xiàng))時(shí),返回值為第一個(gè)匹配到的字符串組成的數(shù)組,數(shù)組的第0號(hào)元素為剛匹配到的字符串,如果regExp有子表達(dá)式,則數(shù)組第1號(hào)元素為regExp的第一個(gè)子表達(dá)式,第2號(hào)元素為regExp的第二個(gè)字表達(dá)式...以此類(lèi)推。同時(shí)主意,regExp對(duì)象的一個(gè)屬性(lastIndex)被改變了,lastIndex被設(shè)置為那個(gè)字符串最后一個(gè)字符所在的位置,其的后面的那個(gè)位置(在上例中是lastIndex = 2)。當(dāng)再次調(diào)用 regExp.exec(string)時(shí),搜索范圍將從regExp.lastIndex開(kāi)始搜索。此時(shí)返回值仍然是單元素的字符串?dāng)?shù)組,lastIndex = 10 。我們經(jīng)常用while循環(huán)來(lái)遍歷字符串中的匹配:

var patt = new RegExp('ab', 'g'),
  str = 'abcdef12ab34cd56ef', ret;
while((ret = patt.exec(str))!=null) {
  console.log(ret);
}
//輸出
['ab']
['ab']

  exec方法返回的不是標(biāo)準(zhǔn)的數(shù)組,應(yīng)該算是一個(gè)類(lèi)數(shù)組,因?yàn)樗€有2個(gè)屬性:input是輸入的字符串,index是當(dāng)前匹配的字符串第一個(gè)字符在input中的位置。

3. string.match(regExp)

  該方法比exec簡(jiǎn)單一些,因?yàn)樗挥每紤]regExp的lastIndex屬性。同樣,也需要分兩種情況(全局匹配與非全局匹配)

  當(dāng)regExp沒(méi)有全局標(biāo)志時(shí),返回值與調(diào)用exec一樣,返回一個(gè)數(shù)組,數(shù)組的第0號(hào)元素為剛匹配到的字符串,如果regExp有子表達(dá)式,則數(shù)組第1號(hào)元素為regExp的第一個(gè)子表達(dá)式,第2號(hào)元素為regExp的第二個(gè)字表達(dá)式...以此類(lèi)推。主意該數(shù)組同時(shí)還有2個(gè)屬性:input是輸入的字符串string,index是當(dāng)前匹配的字符串第一個(gè)字符在input中的位置。

  當(dāng)regExp有全局標(biāo)志(g選項(xiàng))時(shí),很簡(jiǎn)單,也符合我們的理解:返回所有匹配到的字符串組成的數(shù)組。這是標(biāo)準(zhǔn)數(shù)組,沒(méi)有input屬性,也沒(méi)有index屬性。返回值數(shù)組中除了匹配到的字符串沒(méi)有任何其他信息。

  從上面的分析看出,如果你只是想判斷字符串是否匹配某個(gè)正則表達(dá)式,就用test方法。如果想一次性取出所有匹配到的字符串,或者只找到第一個(gè)匹配的字符串就可以,就用match方法。如果你想多次匹配,而且需要知道每個(gè)匹配到的字符串在原始字符串中的位置,或者正則表達(dá)式中還有子表達(dá)式信息需要關(guān)注,就用exec方法。

以上就是javascript正則匹配的多種方法介紹,希望對(duì)大家的學(xué)習(xí)有所幫助。

相關(guān)文章

  • js中split函數(shù)的使用方法說(shuō)明

    js中split函數(shù)的使用方法說(shuō)明

    本篇文章主要是對(duì)js中split函數(shù)的使用方法進(jìn)行了說(shuō)明介紹,需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助
    2013-12-12
  • 深入理解Antd-Select組件的用法

    深入理解Antd-Select組件的用法

    這篇文章主要介紹了深入理解Antd-Select組件的用法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-02-02
  • Document:getElementsByName()使用方法及示例

    Document:getElementsByName()使用方法及示例

    Document:getElementsByName()想必大家對(duì)它并不陌生吧,主要是根據(jù)名稱獲取元素,下面是其具體的使用方法及范例,感興趣的朋友不要錯(cuò)過(guò)
    2013-10-10
  • window.location和document.location的區(qū)別分析

    window.location和document.location的區(qū)別分析

    用戶不能改變document.location(因?yàn)檫@是當(dāng)前顯示文檔的位置)。但是,可以改變window.location (用其它文檔取代當(dāng)前文檔)window.location本身也是一個(gè)對(duì)象,而document.location不是對(duì)象
    2008-12-12
  • JS操作字符串轉(zhuǎn)換為數(shù)值并取整的代碼

    JS操作字符串轉(zhuǎn)換為數(shù)值并取整的代碼

    這篇文章主要介紹了JS操作字符串轉(zhuǎn)換為數(shù)值并取整的代碼,代碼比較短,需要的朋友可以參考下
    2014-01-01
  • js實(shí)現(xiàn)音樂(lè)播放控制條

    js實(shí)現(xiàn)音樂(lè)播放控制條

    這篇文章主要為大家詳細(xì)介紹了js實(shí)現(xiàn)音樂(lè)播放控制條,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-09-09
  • javascript簡(jiǎn)單實(shí)現(xiàn)深淺拷貝過(guò)程詳解

    javascript簡(jiǎn)單實(shí)現(xiàn)深淺拷貝過(guò)程詳解

    這篇文章主要介紹了javascript簡(jiǎn)單實(shí)現(xiàn)深淺拷貝過(guò)程詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-10-10
  • JavaScript反射與依賴注入實(shí)例詳解

    JavaScript反射與依賴注入實(shí)例詳解

    這篇文章主要介紹了JavaScript反射與依賴注入,結(jié)合實(shí)例形式較為詳細(xì)的分析了JavaScript反射與依賴注入的概念、原理、定義、使用方法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下
    2018-05-05
  • Java通過(guò)WebSocket實(shí)現(xiàn)異步導(dǎo)出解決思路

    Java通過(guò)WebSocket實(shí)現(xiàn)異步導(dǎo)出解決思路

    這篇文章主要介紹了通過(guò)WebSocket實(shí)現(xiàn)異步導(dǎo)出,本篇文章記錄大批量數(shù)據(jù)導(dǎo)出時(shí)間過(guò)長(zhǎng),導(dǎo)致接口請(qǐng)求超時(shí)問(wèn)題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2024-01-01
  • 基于bootstrap的文件上傳控件bootstrap fileinput

    基于bootstrap的文件上傳控件bootstrap fileinput

    這篇文章主要為大家詳細(xì)介紹了基于bootstrap的文件上傳控件bootstrap fileinput,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-12-12

最新評(píng)論