成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

為你解疑:VB.NET開發正則表達式bug原因

開發 后端
偶然間發現了關于VB.NET開發正則表達式的一個小bug,在文章中和大家一起來分析一下,看看大家是不是也遇到過,正文還有詳細的代碼。

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

比如以下的代碼就是用來測試用VB.NET開發正則表達式匹配從 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. }   
  9. // However, the characters whoes value are greater than 0xfe are expected to be matched.   
  10. for (int i = 0xff; i <= 0xffff; i++) {   
  11. string s = new string(new char[] { (char)i });   
  12. Debug.Assert(   
  13. regex.IsMatch(s),   
  14. string.Format("The character was expected to be matched: 0x{0:X}!", i));   
  15. }  

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

  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. }   
  8. }   
  9. for(var i=0xff; i<=0xffff; i++) {   
  10. var s = String.fromCharCode( i );   
  11. if ( !re.test(s) ){   
  12. alert( 'Should be matched: ' + i + '!' );   
  13. }   
  14. }   

以上就是關于VB.NET開發正則表達式找出一個bug的分析。

【編輯推薦】

  1. 學習筆記之VB.NET刪除文件夾案例
  2. 經驗之談VB.NET流操作文件兩個案例解析
  3. 利用socket完成VB.NET文件傳輸案例剖析
  4. 針對VB.NET文件流讀、寫類文件演示實例
  5. 剖析講解VB.NET分辯率案例
責任編輯:田樹 來源: 賽迪網
相關推薦

2009-10-26 16:12:19

VB.NET正則表達式

2010-01-07 13:29:00

VB.NET正則表達式

2009-10-26 15:33:27

VB.NET正則表達式

2009-11-03 10:30:47

VB.NET繼承

2009-10-26 16:01:03

VB.NET正則表達式

2009-10-27 10:14:54

VB.NET正則表達式

2009-10-26 16:49:27

VB.NET正則表達式

2009-10-27 13:05:37

VB.NET對象列表

2009-08-07 14:24:31

.NET正則表達式

2009-08-07 14:31:40

.NET正則表達式基礎

2012-01-12 10:21:57

正則表達式

2012-05-08 13:29:01

VB

2010-01-07 15:29:59

VB.NET表達式

2010-01-05 17:46:04

.NET Framew

2020-09-04 09:16:04

Python正則表達式虛擬機

2018-09-27 15:25:08

正則表達式前端

2021-03-02 07:33:13

開發C#字符

2009-10-30 14:21:00

VB.NET開發語言

2016-11-10 16:21:22

Java 正則表達式

2009-09-16 17:15:57

正則表達式引擎
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 综合亚洲视频 | 免费不卡视频 | 不卡一区二区三区四区 | 一区二区三区四区电影视频在线观看 | 亚洲成av人片在线观看 | 国产精品久久久久久久久久免费看 | 99福利视频导航 | 国产精品二区三区 | 国产精品毛片无码 | 国产精品视频免费播放 | 午夜天堂精品久久久久 | 国精品一区 | 99久久精品免费看国产四区 | 亚洲一区二区三 | 国产一区二区三区视频免费观看 | 99精品亚洲国产精品久久不卡 | 欧美综合国产精品久久丁香 | 日本男人天堂 | 黄色大片观看 | 欧美日韩中文字幕在线 | www午夜视频| 亚洲欧美在线观看 | 国产美女久久久 | 日韩伦理一区二区 | 黄色av网站在线观看 | 欧美黄色大片在线观看 | 欧美性一区二区三区 | 久久精品一区 | 99精品久久久国产一区二区三 | 欧美日韩一区二区三区视频 | 色视频网站 | 一级在线视频 | 红色av社区 | av在线天天 | 亚洲大片一区 | 在线免费视频一区 | 老外几下就让我高潮了 | 玖玖视频免费 | 国产精品日本一区二区在线播放 | 99福利在线观看 | 日韩av最新网址 |