日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
為你解疑:VB.NET開發(fā)正則表達(dá)式bug原因

很多朋友都喜歡找語言編程的bug,感覺有成就感,在用VB.NET開發(fā)正則表達(dá)式時我發(fā)現(xiàn)了一個bug!最近在使用正則表達(dá)式的時候發(fā)現(xiàn):在忽略大小寫的時候,匹配值從 0xff 到 0xffff 之間的所有字符,正則表達(dá)式竟然也能匹配兩個 ASCII 字符:i(code: 0x69) 和 I(code: 0x49);但是仍然不能匹配其他的 ASCII 字母和數(shù)字。

十余年的奇臺網(wǎng)站建設(shè)經(jīng)驗,針對設(shè)計、前端、開發(fā)、售后、文案、推廣等六對一服務(wù),響應(yīng)快,48小時及時工作處理。營銷型網(wǎng)站的優(yōu)勢是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動調(diào)整奇臺建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計,從而大程度地提升瀏覽體驗。創(chuàng)新互聯(lián)公司從事“奇臺網(wǎng)站設(shè)計”,“奇臺網(wǎng)站推廣”以來,每個客戶項目都認(rèn)真落實執(zhí)行。

比如以下的代碼就是用來測試用VB.NET開發(fā)正則表達(dá)式匹配從 0xff 到 0xffff 的字符。而值范圍在 0 到 0xfe 的所有字符是不能被匹配的。

 
 
 
  1. 1234567891011121314151617Regex regex = new Regex(@"[/u00FF-/uFFFF]+"); 
  2. // The characters, whoes value are smaller than 0xff, are not expected to be matched. 
  3. for (int i = 0; i < 0xff; i++) { 
  4. string s = new string(new char[] { (char)i }); 
  5. Debug.Assert( 
  6. !regex.IsMatch(s), 
  7. string.Format("The character was not expected to be matched: 0x{0:X}!", i)); 
  8. // However, the characters whoes value are greater than 0xfe are expected to be matched. 
  9. for (int i = 0xff; i <= 0xffff; i++) { 
  10. string s = new string(new char[] { (char)i }); 
  11. Debug.Assert( 
  12. regex.IsMatch(s), 
  13. string.Format("The character was expected to be matched: 0x{0:X}!", i)); 

這時的運行結(jié)果是正常的,沒有任何的斷言錯誤出現(xiàn)。然而當(dāng)使用忽略大小寫的匹配模式時,結(jié)果就不一樣了。將上面代碼中的第一行改成:

 
 
 
  1. 1Regex regex = new Regex(@"[/u00FF-/uFFFF]+", RegexOptions.IgnoreCase); 

程序運行的時候就會有兩處斷言錯誤。它們分別是字符值為 73 和 105,也就是小寫字母 i 和大寫字母 I。 這個 bug 非常奇怪,別的字符都很正常!而且用 javascript 腳本在 IE (版本是6.0)里面運行也同樣有這么 bug 存在(比如下面這段代碼)。然而在 Firefox 中運行就是沒有問題的。還是 Firefox 好啊,呵呵!

 
 
 
  1. 1234567891011121314151617var re = /[/u00FF-/uFFFF]+/; 
  2. // var re = /[/u00FF-/uFFFF]+/i; 
  3. for(var i=0; i<0xff; i++) { 
  4. var s = String.fromCharCode( i ); 
  5. if ( re.test(s) ){ 
  6. alert( 'Should not be matched: ' + i + '!' ); 
  7. for(var i=0xff; i<=0xffff; i++) { 
  8. var s = String.fromCharCode( i ); 
  9. if ( !re.test(s) ){ 
  10. alert( 'Should be matched: ' + i + '!' ); 

以上就是關(guān)于VB.NET開發(fā)正則表達(dá)式找出一個bug的分析。


當(dāng)前題目:為你解疑:VB.NET開發(fā)正則表達(dá)式bug原因
URL網(wǎng)址:http://www.dlmjj.cn/article/djhopih.html