最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

正確使用帶有"g"標(biāo)記的javascript正則表達式

 更新時間:2009年05月29日 20:50:15   作者:  
javascript正則表達式是對字符串執(zhí)行模式匹配的強大工具。正確使用它會給我們的工作帶來很大的便利??墒怯行┑胤接捎谖覀儧]有太注意或者根本不理解,就會遇到不可預(yù)料的麻煩。
下面我們要談?wù)剮в?g" 標(biāo)記的正則表達式的使用問題,首先讓我們看一段代碼,從例子入手更容易理解。
復(fù)制代碼 代碼如下:

1 function a(val)
2 {
3 var re = /^\d+$/g;
4 alert(re.lastIndex);
5 return re.test(val);
6 }
7 alert(a(5));
8 alert(a(6));

運行上述代碼,在不同瀏覽器中會得到不同結(jié)果,IE中:0 true 0 true,FF和Chrome中:0 true 1 false,看到這里,想必會有人一頭霧水,感到詫異。針對這個問題,就我目前查閱資料,找到了兩種方法。

1、使用match

復(fù)制代碼 代碼如下:

1 function a(val)

2
3 {
4
5 var re = /^\d+$/g;
6
7 if((""+val).match(re))
8
9 return true;
10
11 else
12
13 return false;
14
15 }
16
17 alert(a(5));
18
19 alert(a(6));

注:要使用""+val把val轉(zhuǎn)化為字符串,關(guān)于match的具體使用方法可參考這里

2、使用不帶"g" 的正則表達式(var re=/^\d+$/或var re=new RegExp("^[0-9]+$"))


復(fù)制代碼 代碼如下:

1 function a(val)
2
3 {
4
5 var re = new RegExp("^[0-9]+$");//或者var re=/^\d+$/;
6
7 return re.test(val);
8
9 }
10
11 alert(a(5));
12
13 alert(a(6));
14
15


注:var re = new RegExp("^[0-9]+$")中只能用[0-9],不能用\d,至于為什么,我不很明白,希望哪位知道的給講講。

不難看出,上面兩種方法是從側(cè)面考慮怎么解決問題 的,沒有從正面解決,接下來我們從問題出現(xiàn)的本質(zhì)上分析一下,并給出解決方法。

要從問題出現(xiàn)的本質(zhì)考慮,我們就不得不從"g" 標(biāo)記說起,帶有"g"標(biāo)記的正則表達式有一個屬性lastIndex,該屬性存放一個整數(shù),它聲明的是上一次匹配文本之后的第一個字符的位置。上次匹配的結(jié)果是由方法 RegExp.exec() 和 RegExp.test() 找到的,它們都以 lastIndex 屬性所指的位置作為下次檢索的起始點。這樣,就可以通過反復(fù)調(diào)用這兩個方法來遍歷一個字符串中的所有匹配文本。該屬性是可讀可寫的。只要目標(biāo)字符串的下一次搜索開始,就可以對它進行設(shè)置。當(dāng)方法 exec() 或 test() 再也找不到可以匹配的文本時,它們會自動把 lastIndex 屬性重置為 0。看到這里我們不難看出問題出現(xiàn)的原因和解決方法了,只要我們在下次搜索之前把lastIndex屬性重置為0即可,如下:


復(fù)制代碼 代碼如下:

1 function a(val)
2
3 {
4
5 var re = /^\d+$/g;
6
7 re.lastIndex=0;//重置lastIndex為0
8
9 return re.test(val);
10
11 }
12
13 alert(a(5));
14
15 alert(a(6));


關(guān)于lastIndex的更多解釋請看這里

至此我們已經(jīng)明白問題出現(xiàn)的本質(zhì),以及如何較好的解決這樣的問題,希望本文對一些人有幫助。

相關(guān)文章

  • 正則表達式匹配0-10的正整數(shù)以及使用細(xì)節(jié)

    正則表達式匹配0-10的正整數(shù)以及使用細(xì)節(jié)

    我們可以使用正則表達式來代表一些我們希望的字符串類型,比如正整數(shù),下面這篇文章主要給大家介紹了關(guān)于正則表達式匹配0-10的正整數(shù)以及使用細(xì)節(jié)的相關(guān)資料,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-11-11
  • 收集整理ASP.NET中17種常用正則表達式

    收集整理ASP.NET中17種常用正則表達式

    正則表達式在程序開發(fā)中的應(yīng)用非常廣泛,本文給大家分享了asp.net中17種常用的正則表達式,需要的朋友可以參考下
    2015-09-09
  • 最新密碼驗證正則表達式

    最新密碼驗證正則表達式

    這篇文章主要為大家分享了最新密碼驗證正則表達式,密碼形式可以根據(jù)開發(fā)需求進行設(shè)定,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-11-11
  • 正則表達式的語法

    正則表達式的語法

    正則表達式(regular expression)描述了一種字符串匹配的模式,可以用來檢查一個串是否含有某種子串、將匹配的子串做替換或者從某個串中取出符合某個條件的子串等
    2006-09-09
  • 使用正則表達式判斷密碼強弱

    使用正則表達式判斷密碼強弱

    本文給大家分享使用正則表達式來判斷密碼強弱的實例代碼,非常不錯,具有參考借鑒價值,需要的朋友參考下吧
    2017-06-06
  • JavaScript中常用的正則表達式日常整理(全)

    JavaScript中常用的正則表達式日常整理(全)

    本篇文章是小編日常整理有關(guān)js常用的正則表達式,比較全面,對大家學(xué)習(xí)javascript正則表達式非常有用,需要的朋友一起學(xué)習(xí)吧
    2015-09-09
  • javascript正則表達式分析

    javascript正則表達式分析

    想必很多人都對正則表達式都頭疼。今天,我以我的認(rèn)識,加上網(wǎng)上一些文章,希望用常人都可以理解的表達方式來和大家分享學(xué)習(xí)經(jīng)驗。
    2008-05-05
  • 淺談?wù)齽t表達式回溯陷阱

    淺談?wù)齽t表達式回溯陷阱

    日常編程經(jīng)常會用到正則表達式,躲不開這個陷阱,本文主要介紹了淺談?wù)齽t表達式回溯陷阱,具有一定的參考價值,感興趣的可以了解一下
    2023-11-11
  • js正則解析URL參數(shù)示例代碼

    js正則解析URL參數(shù)示例代碼

    URL參數(shù)使用js正則解析具體實現(xiàn)代碼如下,有需求的朋友可以參考下,希望對大家有所幫組
    2013-08-08
  • JavaScript正則表達式校驗非零的正整數(shù)實例

    JavaScript正則表達式校驗非零的正整數(shù)實例

    本文分享了JavaScript正則表達式(^[1-9]\d*$ 或 ^([1-9][0-9]*){1,3}$ 或 ^\+?[1-9][0-9]*$)校驗非零的正整數(shù)實例代碼,代碼簡單易懂,需要的朋友可以看下
    2016-12-12

最新評論

皮山县| 辽宁省| 南陵县| 杭锦后旗| 克什克腾旗| 东港市| 湘阴县| 会泽县| 舞钢市| 台北县| 临颍县| 青河县| 尼玛县| 龙陵县| 乳山市| 米易县| 招远市| 满洲里市| 尚义县| 塘沽区| 武乡县| 山阳县| 平原县| 闵行区| 南华县| 松江区| 岑巩县| 清苑县| 林周县| 宣化县| 平度市| 灵台县| 昭通市| 龙井市| 英山县| 新巴尔虎右旗| 怀来县| 成武县| 巴南区| 车致| 凤山县|