日本好好热aⅴ|国产99视频精品免费观看|日本成人aV在线|久热香蕉国产在线

  • <cite id="ikgdy"><table id="ikgdy"></table></cite>
    1. 西西軟件園多重安全檢測下載網(wǎng)站、值得信賴的軟件下載站!
      軟件
      軟件
      文章
      搜索

      首頁編程開發(fā)javascript|JQuery → JavaScript正則表達式在不同瀏覽器中可能遇到的問題

      JavaScript正則表達式在不同瀏覽器中可能遇到的問題

      相關(guān)軟件相關(guān)文章發(fā)表評論 來源:本站整理時間:2010/9/8 22:15:48字體大。A-A+

      作者:佚名點擊:231次評論:0次標(biāo)簽: 正則表達式 瀏覽器

      • 類型:音頻處理大。1M語言:中文 評分:5.1
      • 標(biāo)簽:
      立即下載

      這兩天在用正則表達式搞一個稍微有點復(fù)雜的東西,但是不同瀏覽器之間的差異可浪費了我不少的人參。

       

      現(xiàn)在我把正則表達式在五大主流瀏覽器(IE、Firefox、Chrome、Safari、Opera,以當(dāng)前版本為準(zhǔn))之間的差異整理一下羅列出來,給大家,也算給我自己做一個備忘。

       

      Firefox和Chrome會過度優(yōu)化在循環(huán)中創(chuàng)建的正則表達式,似乎它們在假設(shè)寫JavaScript的人會把正則表達式的構(gòu)建和賦值寫錯地方。

      1 var r;

      2 for(var i = 0; i < 2; i++){

      3 var x = /abc/g;

      4 if(r)

      5 document.write(r == x); // 第二個循環(huán)時Firefox和Chrome會輸出“true”

      6 else

      7 r = x;

      8 }

      如果你把一個有可能什么也不返回的函數(shù)作為第二個參數(shù)傳遞給replace方法,那么IE可能會直接刪除匹配的文本(在之前的測試中我總結(jié)的是Opera的行為比較獨特,現(xiàn)在看起來似乎是錯誤的結(jié)論),而其它瀏覽器則是會將匹配的文本替換成“undefined”。

      1 document.write('123'.replace(/2/, function(){})); // IE會輸出“13”,而其它瀏覽器輸出“1undefined3”

      如果使用new RegExp的形式創(chuàng)建正則表達式時使用一個已有的正則表達式實例作為參數(shù),那么大部分瀏覽器都會創(chuàng)建一個基本功能相同,但完全獨立的、全新的正則表達式實例;而Safari則會很干脆地返回作為參數(shù)的那個正則表達式實例。

      1 var r = /1/;

      2 document.write(new RegExp(r) == r); // Safari會輸出“true”,而其它瀏覽器輸出為“false”

      如果把一個“空”的正則表達式直接轉(zhuǎn)化成字符串,IE以外的瀏覽器都會得到“/(?:)/”,而IE會得到“//”——但從正則表達式上直接提取source屬性的時候,得到的都是空字符串。

      1 document.write(new RegExp('')); // IE輸出“//”,其它瀏覽器輸出“/(?:)/”

      2 document.write(eval('' + new RegExp(''))) // IE輸出“undefined”,其它瀏覽器輸出“/(?:)/”

      如果把一個包含斜線“/”的正則表達式直接轉(zhuǎn)化成字符串——以“new RegExp('/')”為例,只有Firefox和Opera會得到“/\//”,并且直接提取source屬性會得到“\/”;而其它瀏覽器則會得到“///”,且直接提取source屬性會得到“/”。

      1 document.write(new RegExp('/')); // Firefox和Opera輸出“/\//”,其它瀏覽器輸出“///”

      2 document.write(eval('' + new RegExp('/'))) // Firefox和Opera輸出“/\//”,其它瀏覽器輸出“undefined”

      如果在使用字面表達式來定義一個正則表達式時,使用了無效的選項標(biāo)志(例如“/abc/n”),則Chrome和Safari會完全忽視此無效選項標(biāo)志(等同于“/abc/”),而在其它瀏覽器會導(dǎo)致語法錯誤。

      1 document.write(/abc/n); // Chrome和Safari會輸出“/abc/”,其它瀏覽器中產(chǎn)生語法錯誤

      暫時就這些吧,發(fā)現(xiàn)新的再補上。

        相關(guān)評論

        閱讀本文后您有什么感想? 已有人給出評價!

        • 8 喜歡喜歡
        • 3 頂
        • 1 難過難過
        • 5 囧
        • 3 圍觀圍觀
        • 2 無聊無聊

        熱門評論

        最新評論

        發(fā)表評論 查看所有評論(0)

        昵稱:
        表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
        字?jǐn)?shù): 0/500 (您的評論需要經(jīng)過審核才能顯示)