亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Regex > 正文

正則表達式字面量在ECMAScript5中的變化

2020-03-16 21:10:33
字體:
來源:轉載
供稿:網友
也就是說在ECMAScript3規范中,用正則表達式創建的RegExp對象會共享同一個實例,而在ECMAScript5中則是兩個獨立的實例
 
 
在《JavaScript語言精粹》的第72頁有這樣一段: 

用正則表達式字面量創建的RegExp對象來共享同一個單實例: 
復制代碼代碼如下:

function make_a_matcher( ) { 
return /a/gi; 

var x = make_a_matcher( ); 
var y = make_a_matcher( ); 

// 注意:x 和 y 是同一個對象! 

x.lastIndex = 10; 

document.writeln(y.lastIndex); // 10當你在瀏覽器中運行這段代碼時,你會發現IE6-IE9、FireFox4、Chrome10、Safari5輸出都是0,Firefox 3.6.16輸出是10,原因可以在ECMAScript5規范第24頁和第247頁找到: 


A regular expression literal is an input element that is converted to a RegExp object (see 15.10) each time the literal is evaluated. Two regular expression literals in a program evaluate to regular expression objects that never compare as === to each other even if the two literals' contents are identical. A RegExp object may also be created at runtime by new RegExp (see 15.10.4) or calling the RegExp constructor as a function (15.10.3). 

7.8.5: Regular expression literals now return a unique object each time the literal is evaluated. This change is detectable by any programs that test the object identity of such literal values or that are sensitive to the shared side effects. 

也就是說在ECMAScript3規范中,用正則表達式創建的RegExp對象會共享同一個實例,而在ECMAScript5中則是兩個獨立的實例?!禞avaScript語言精粹》出版時ECMAScript5還沒有發布,在這個問題上書和ECMAScript3標準保持了一致。FireFox3.6遵循了ECMAScript3標準,所以結果與書中一致,而最新的Firefox4、Chrome和Safari5都遵循ECMAScript5標準,至于IE6-IE8都沒有很好的遵循ECMAScript3標準,不過在這個問題上反而處理對了。很明顯ECMAScript5的規范更符合開發者的期望,那就是相同的正則表達式字面量創建獨立的RegExp對象會有不同的lastIndex,才方便分別處理。 

在ECMAScript5規范的第247頁還有兩條來說明ECMAScript5和ECMAScript3在正則表達式字面量上的改變: 

7.8.5: Edition 5 requires early reporting of any possible RegExp constructor errors that would be produced when converting a RegularExpressionLiteral to a RegExp object. Prior to Edition 5 implementations were permitted to defer the reporting of such errors until the actual execution time creation of the object. 
7.8.5: In Edition 5 unescaped “/” characters may appear as a CharacterClass in a regular expression literal. In Edition 3 such a character would have been interpreted as the final character of the literal. 

第1個是在ECMAScript5中正則表達式字面量轉化為RegExp對象時,任何RegExp構造器的錯誤都會盡早報告,而在之前的規范中是只有對象創建真正執行時才會報錯。 

第2個是說在ECMAScript5的正則表達式字面量中,未轉義的正斜杠“/”可以直接用在正則表達式字符類中。而在ECMAScript3中它只能作為正則表達式字面量的開始和結束字符。從IE6-IE9、Firefox3.6-Firefox4.0、Chrome和Safari都可以直接把未轉義的正斜杠“/”用在正則表達式字符類中。如: 
復制代碼代碼如下:

var my_regexp = /([8/5+4]*).{3}/g; 
var str = '8/5+4 is what!'; 

var result = my_regexp.exec(str); // the same in IE6-9,FF3.6-4.0,Chrome,Safari 

for(var i = 0,n = result.length; i < n; ++i){ 
document.writeln(result[i]); 

result[0] = 8/5+4 is 
result[1] = 8/5+4 

在《JavaScript語言精粹》第76頁也指明在正則表達式的字符類中使用正斜杠“/”需要轉義,也是基于ECMAScript3規范。由于正則表達式中需要轉義的特殊字符比較多,當心存疑慮時對任何特殊字符都可以使用反斜杠“/”來使其字面化確保安全,不過這個規則不適宜字母和數字。 

正則表達式字面量從ECMAScript3到ECMAScript5的改變也蠻符合HTML5設計原理中提到的2條。一條是“一旦遇到沖突,最終用戶優先,其次是作者,其次是實現者,其次標準制定者,最后才是理論上的完滿”,另一條是“支持已有內容”。 

最后推薦一下XRegExp,它是一個非常優秀的正則表達式JavaScript庫,兼容多個主流瀏覽器、ECMAScript3和ECMAScript5。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品视频资源| 国产91亚洲精品| 91精品在线播放| 狠狠爱在线视频一区| 成人欧美一区二区三区黑人孕妇| 久久久久99精品久久久久| 欧美高清在线视频观看不卡| 国产亚洲精品久久久| 日韩av大片免费看| 国产成人精品午夜| 亚洲国产精品美女| 欧美性高潮床叫视频| 日韩中文字幕在线观看| 国产91精品久| 91免费高清视频| 日韩精品久久久久久福利| 久久精品成人一区二区三区| 日韩激情片免费| 中文字幕国产亚洲2019| 亚洲最大成人免费视频| 欧美日韩中文字幕日韩欧美| 中文字幕日韩视频| 成人av在线亚洲| 欧美午夜影院在线视频| 久久免费福利视频| 一区二区三区亚洲| 欧美日韩中国免费专区在线看| 亚洲成人av中文字幕| 精品国产31久久久久久| 欧美乱大交xxxxx另类电影| 美日韩精品视频免费看| 欧美日本在线视频中文字字幕| 国产精品99一区| 欧美www视频在线观看| 7777免费精品视频| 一道本无吗dⅴd在线播放一区| 欧美成人免费在线观看| 在线看日韩av| 97在线视频一区| 亚洲第一页在线| 91在线播放国产| 最近2019中文免费高清视频观看www99| 亚洲国产精品免费| 热久久99这里有精品| 精品国产欧美一区二区五十路| 国产一区二区av| 久久精品青青大伊人av| 国产精品九九九| 红桃视频成人在线观看| 原创国产精品91| 97在线日本国产| 欧美视频专区一二在线观看| 久久精品国产清自在天天线| 国产精品高潮在线| 亚洲色图25p| 亚洲成人黄色网址| 欧美日韩电影在线观看| 中文字幕欧美亚洲| 91a在线视频| 一区三区二区视频| 色综合久久天天综线观看| 成人国内精品久久久久一区| 亚洲视频网站在线观看| 中文字幕亚洲欧美日韩2019| 国产精品久久久久999| 亚洲精品久久久久中文字幕二区| 国产精品视频最多的网站| 久久97久久97精品免视看| 欧美黑人一级爽快片淫片高清| 亚洲精品视频在线播放| 亚洲国产日韩精品在线| 国产精品久久久久福利| 国产成人精品a视频一区www| 亚洲国产高清高潮精品美女| 美女撒尿一区二区三区| 国产精品美女免费| 亚洲色图狂野欧美| 欧美极品少妇xxxxⅹ喷水| 亚洲欧美日韩一区二区在线| 欧美大片在线影院| 一区二区三区久久精品| 成人国产精品色哟哟| 91久久久久久久久久| 麻豆乱码国产一区二区三区| 日韩欧美综合在线视频| 日本免费久久高清视频| 日本精品va在线观看| 中文字幕日韩欧美精品在线观看| 57pao成人国产永久免费| 久久99久久久久久久噜噜| 欧美寡妇偷汉性猛交| 国产精品福利片| 日本sm极度另类视频| 91精品国产777在线观看| 亚洲欧美中文在线视频| 亚洲深夜福利网站| 色综合久久悠悠| 97香蕉久久超级碰碰高清版| 日韩av大片免费看| 亚洲免费成人av电影| 一本一道久久a久久精品逆3p| 久久香蕉精品香蕉| 久久免费福利视频| 久久久久久久激情视频| 日韩一区二区久久久| 亚洲成**性毛茸茸| 久久久久国产一区二区三区| 国产综合福利在线| 日韩欧美一区视频| 精品爽片免费看久久| 亚洲一二三在线| 久久亚洲国产成人| 久久久国产精品一区| 欧美亚洲第一区| 国产精品美女久久久久久免费| 中文精品99久久国产香蕉| 国产精品成人久久久久| 国产精品96久久久久久| 国产欧美 在线欧美| 中文字幕精品国产| 91国自产精品中文字幕亚洲| 久久久免费在线观看| 亚洲japanese制服美女| 日韩电影大全免费观看2023年上| 欧美综合第一页| 国语自产在线不卡| 色综合影院在线| 在线观看成人黄色| 亚洲天堂免费观看| 久久在精品线影院精品国产| 精品国产一区二区三区久久久| 国产亚洲欧洲高清一区| 自拍偷拍亚洲一区| 国产精品99久久久久久www| 国产精品永久免费视频| 中文字幕成人精品久久不卡| 亚洲精品久久久久久久久久久久久| 国产精品一区二区久久| 2019日本中文字幕| 日韩av影片在线观看| 中文字幕日韩欧美精品在线观看| 精品久久久久久| 国产精品激情自拍| 亚洲欧美中文字幕在线一区| 欧美大片免费看| 欧美精品久久久久久久久久| 国产精品一区二区久久久| 国产精品自产拍高潮在线观看| 97视频在线观看网址| 国产剧情日韩欧美| 国产乱人伦真实精品视频| 久久亚洲精品一区二区| 久久欧美在线电影| 欧美国产中文字幕| 亚洲大尺度美女在线| 国内外成人免费激情在线视频网站| 国产一区二区三区丝袜| 久99久在线视频| 最近2019中文字幕大全第二页| 精品亚洲一区二区三区| 欧美激情视频一区二区三区不卡| 久久免费视频网站| 国产成人一区二区| 欧美日韩国产黄|