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

你不一定知道的關(guān)于JavaScript的正則表達式

 更新時間:2010年09月10日 01:33:48   作者:  
關(guān)于JavaScript中的正則表達式——,你不一定知道也可能用不到,但說不定哪天就會遭遇的幾個事實【新增一個】
這兩天在用正則表達式搞一個稍微有點復雜的東西,但是不同瀏覽器之間的差異可浪費了我不少的人參。

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

1、Firefox和Chrome會過度優(yōu)化在循環(huán)(以及其中內(nèi)嵌的函數(shù)定義)中創(chuàng)建的正則表達式,似乎它們在假設(shè)寫JavaScript的人會把正則表達式的構(gòu)建和賦值寫錯地方。
復制代碼 代碼如下:

var r;
for(var i = 0; i < 2; i++){
var x = /abc/g;
if(r)
document.write(r == x); // 第二個循環(huán)時Firefox和Chrome會輸出“true”
else
r = x;
}

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

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

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

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

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

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

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

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

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

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

7、如果通過構(gòu)造器來創(chuàng)建正則表達式時,為其指定選項標志的(第二個)字符串參數(shù)中包含了非有效標志的字符,在Firefox中就會引起一個異常,而其它瀏覽器會將無效的部分忽略。
復制代碼 代碼如下:

document.write(new RegExp('1', 'n')); // Firefox中會引起一個異常,提示無效的標志;而其它瀏覽器會輸出“/1/”

暫時就這些吧,發(fā)現(xiàn)新的再補上。
來自:http://www.cnblogs.com/NanaLich

相關(guān)文章

  • 使用正則表達式從鏈接中獲取圖片名稱

    使用正則表達式從鏈接中獲取圖片名稱

    正則表達式有時可用來判斷是否包含某些數(shù)據(jù),有時可用來獲取匹配數(shù)據(jù),下面這篇文章主要給大家介紹了關(guān)于使用正則表達式從鏈接中獲取圖片名稱的相關(guān)資料,需要的朋友可以參考下
    2022-05-05
  • linux下的通配符與正則表達式

    linux下的通配符與正則表達式

    正則表達式是在文件中匹配符合條件的字符串的。下面通過本文給大家介紹linux下的通配符與正則表達式,需要的的朋友參考下吧
    2017-05-05
  • 淺析一個匹配數(shù)字和字母密碼的正則表達式

    淺析一個匹配數(shù)字和字母密碼的正則表達式

    最近做項目,遇到這樣的需求,要求由數(shù)字和字母組成,并且要同時含有數(shù)字和字母,且長度要在8-16位之間。下面給大家分享實現(xiàn)代碼,要求看看吧
    2017-06-06
  • EditPlus 正則表達式替換字符串詳解

    EditPlus 正則表達式替換字符串詳解

    正則表達式是一個查詢的字符串,它包含一般的字符和一些特殊的字符,特殊字符可以擴展查找字符串的能力,正則表達式在查找和替換字符串的作用不可忽視,它能很好提高工作效率。
    2009-08-08
  • JScript中正則表達函數(shù)的說明與應(yīng)用

    JScript中正則表達函數(shù)的說明與應(yīng)用

    JScript中正則表達函數(shù)的說明與應(yīng)用...
    2006-06-06
  • 正則表達式同時匹配中英文及常用正則表達式

    正則表達式同時匹配中英文及常用正則表達式

    這篇文章主要介紹了正則表達式同時匹配中英文及常用正則表達式的相關(guān)資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2016-11-11
  • 正則表達式簡介及在C++11中的簡單使用教程

    正則表達式簡介及在C++11中的簡單使用教程

    正則表達式(regular expression)是計算機科學中的一個概念,又稱規(guī)則表達式,通常簡寫為regex、regexp、RE、regexps、regexes、regexen。接下來通過本文給大家介紹正則表達式簡介及在C++11中的簡單使用教程,一起通過本文學習吧
    2017-02-02
  • js正則表達式實現(xiàn)數(shù)字每隔四位用空格分隔代碼

    js正則表達式實現(xiàn)數(shù)字每隔四位用空格分隔代碼

    這篇文章主要介紹了js正則表達式實現(xiàn)數(shù)字每隔四位用空格分隔代碼,需要的朋友可以參考下
    2016-12-12
  • 正則表達式模式修飾符

    正則表達式模式修飾符

    下面列出了當前可用的正則表達式修飾符。括號中提到的名字是正則表達式內(nèi)部這些修飾符的名稱。 模式修飾符中的空格,換行符會被忽略,其他字符會導致錯誤
    2016-12-12
  • 編寫高質(zhì)量的js之正確理解正則表達式回溯

    編寫高質(zhì)量的js之正確理解正則表達式回溯

    在正則表達式實現(xiàn)中,回溯是匹配過程的基本組成部分,它是正則表達式如此好用和強大的根源。然而,回溯計算代價很高,如果設(shè)計失誤,將導致失控?;厮菔怯绊懻w性能的唯一因素,理解它的工作原理,以及如何減小使用頻率,可能是編寫高效正則表達式的關(guān)鍵點
    2016-12-12

最新評論

和林格尔县| 神木县| 通山县| 万宁市| 万州区| 丹江口市| 安溪县| 海门市| 扬州市| 南部县| 河南省| 滁州市| 旬邑县| 望江县| 上林县| 淅川县| 岱山县| 旬邑县| 绿春县| 韶关市| 郎溪县| 苏尼特左旗| 乐清市| 西林县| 夏津县| 和政县| 丰宁| 杭锦旗| 开原市| 巩义市| 孝感市| 新疆| 哈尔滨市| 桦南县| 中方县| 罗城| 陈巴尔虎旗| 门头沟区| 莱州市| 镇巴县| 玉门市|