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

首頁 > 編程 > regex > 正文

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

2020-01-20 22:16:04
字體:
來源:轉載
供稿:網友
在《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
成人免费午夜电影| 日韩av在线不卡| 欧美制服第一页| 国产精品一区二区三| 欧美专区在线视频| 91天堂在线视频| 欧美在线视频免费| 久久av在线播放| 美女精品视频一区| 永久免费毛片在线播放不卡| 国产婷婷成人久久av免费高清| 欧美激情精品久久久久久变态| 色一区av在线| 欧美日韩国产成人高清视频| 亚洲网在线观看| 亚洲精品久久久久久久久久久| 日韩精品视频三区| 这里只有精品视频在线| 欧洲日本亚洲国产区| 久久久免费在线观看| 中文字幕亚洲激情| 日韩欧美在线免费观看| 国产视频在线观看一区二区| www.色综合| 国产精品久久久久久亚洲调教| 日韩av在线免费观看| 成人www视频在线观看| 欧美国产高跟鞋裸体秀xxxhd| 欧美成人精品三级在线观看| 国产精品一区二区电影| 国产精品毛片a∨一区二区三区|国| 97精品国产97久久久久久| 久久久久国色av免费观看性色| 91手机视频在线观看| 亚洲精品成人久久久| 国产一区二区在线免费视频| 亚洲一区二区福利| 久久久久久国产精品久久| 亚洲在线视频观看| 中文字幕久久久| 亚洲电影免费观看高清完整版在线观看| 91精品综合久久久久久五月天| 国产性猛交xxxx免费看久久| 日韩精品在线视频| 亚洲欧美日韩精品久久奇米色影视| 91tv亚洲精品香蕉国产一区7ujn| 欧美日韩福利电影| 最新中文字幕亚洲| 久久久国产精品x99av| 欧美国产高跟鞋裸体秀xxxhd| 国语自产精品视频在免费| 国产精品69久久| 欧美午夜www高清视频| 亚洲大胆人体在线| 中文字幕9999| 亚洲第一视频网| 亚洲精品中文字幕av| 欧美日韩视频免费播放| 亚洲男人天天操| 欧美大片在线看免费观看| 精品自在线视频| 中文字幕亚洲无线码a| 91成人天堂久久成人| 日韩在线观看免费av| 久久男人的天堂| 中文字幕综合在线| 午夜精品久久久久久久99热| 懂色av中文一区二区三区天美| 成人女保姆的销魂服务| 亚洲级视频在线观看免费1级| 欧美午夜视频在线观看| 欧美日韩不卡合集视频| 性夜试看影院91社区| 欧美午夜女人视频在线| 国产欧美精品在线| 亚洲国产成人91精品| 欧洲成人在线观看| 日本久久中文字幕| 国内精品小视频在线观看| 美乳少妇欧美精品| 久久久女女女女999久久| 日韩在线视频中文字幕| 国产精品丝袜白浆摸在线| 亚洲国产成人久久综合一区| 亚洲激情第一页| 亚洲男人天堂网| 亚洲男人天堂手机在线| 久久精品国产69国产精品亚洲| 国产成人免费91av在线| 国产精品日韩在线播放| 麻豆国产va免费精品高清在线| 国产成人拍精品视频午夜网站| 久久精品国产视频| 国产精品一区二区三区久久久| 国产婷婷成人久久av免费高清| 26uuu日韩精品一区二区| 成人网在线观看| 久久综合亚洲社区| 91精品国产综合久久男男| 国产丝袜精品第一页| 亚洲精品国产综合区久久久久久久| 成人网在线免费观看| 久久激情视频久久| 亚洲欧美制服丝袜| 亚洲日本成人网| 九九九热精品免费视频观看网站| 欧美性高潮在线| 91人成网站www| 成人妇女免费播放久久久| 亚洲成人精品久久| 欧美日本精品在线| 91精品视频大全| 亚洲毛片在线免费观看| 日韩中文字在线| 亚洲国产成人av在线| 欧美激情xxxxx| 欧美日韩中文字幕在线视频| 中文字幕亚洲综合久久筱田步美| 热re99久久精品国产66热| 亚洲精品美女网站| 成人a级免费视频| 日韩视频永久免费观看| 伊是香蕉大人久久| 国产欧美日韩亚洲精品| 国产精品免费视频xxxx| 日韩一二三在线视频播| 九九热这里只有精品免费看| 日本精品va在线观看| 欧美日韩一区二区精品| 国产欧美在线播放| 精品久久久久久电影| 国产视频欧美视频| 国产日本欧美一区二区三区在线| 欧美老女人性视频| 国产一区二区三区在线看| 欧美人交a欧美精品| 亚洲色图av在线| 国产精品专区h在线观看| 亚洲电影av在线| 91久久久在线| 成人精品网站在线观看| 国产精品免费视频久久久| 国产日韩换脸av一区在线观看| 91禁国产网站| 欧美最顶级丰满的aⅴ艳星| 亚洲免费伊人电影在线观看av| 久久久久久久久久久免费精品| 成人黄色av播放免费| 国内免费久久久久久久久久久| 国产在线观看不卡| 中文字幕亚洲一区二区三区| 欧美性极品xxxx做受| 91网站免费观看| 日韩精品在线视频美女| www国产精品视频| 粉嫩老牛aⅴ一区二区三区| 亚洲日本中文字幕免费在线不卡| 国产精品网站视频| 亚洲最新在线视频| 欧美美最猛性xxxxxx| 亚洲色图狂野欧美| 在线成人免费网站| 国产精品福利小视频| 2019国产精品自在线拍国产不卡|