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

為你解疑:VB.NET開發(fā)正則表達(dá)式bug原因

開發(fā) 后端
偶然間發(fā)現(xiàn)了關(guān)于VB.NET開發(fā)正則表達(dá)式的一個(gè)小bug,在文章中和大家一起來分析一下,看看大家是不是也遇到過,正文還有詳細(xì)的代碼。

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

比如以下的代碼就是用來測(cè)試用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. }   
  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. }  

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

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


程序運(yùn)行的時(shí)候就會(huì)有兩處斷言錯(cuò)誤。它們分別是字符值為 73 和 105,也就是小寫字母 i 和大寫字母 I。 這個(gè) bug 非常奇怪,別的字符都很正常!而且用 javascript 腳本在 IE (版本是6.0)里面運(yùn)行也同樣有這么 bug 存在(比如下面這段代碼)。然而在 Firefox 中運(yùn)行就是沒有問題的。還是 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. }   

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

【編輯推薦】

  1. 學(xué)習(xí)筆記之VB.NET刪除文件夾案例
  2. 經(jīng)驗(yàn)之談VB.NET流操作文件兩個(gè)案例解析
  3. 利用socket完成VB.NET文件傳輸案例剖析
  4. 針對(duì)VB.NET文件流讀、寫類文件演示實(shí)例
  5. 剖析講解VB.NET分辯率案例
責(zé)任編輯:田樹 來源: 賽迪網(wǎng)
相關(guān)推薦

2009-10-26 16:12:19

VB.NET正則表達(dá)式

2010-01-07 13:29:00

VB.NET正則表達(dá)式

2009-10-26 16:01:03

VB.NET正則表達(dá)式

2009-10-27 10:14:54

VB.NET正則表達(dá)式

2009-11-03 10:30:47

VB.NET繼承

2009-10-26 15:33:27

VB.NET正則表達(dá)式

2009-10-26 16:49:27

VB.NET正則表達(dá)式

2009-08-07 14:24:31

.NET正則表達(dá)式

2009-10-27 13:05:37

VB.NET對(duì)象列表

2012-05-08 13:29:01

VB

2010-01-07 15:29:59

VB.NET表達(dá)式

2018-09-27 15:25:08

正則表達(dá)式前端

2020-09-04 09:16:04

Python正則表達(dá)式虛擬機(jī)

2009-08-07 14:31:40

.NET正則表達(dá)式基礎(chǔ)

2012-01-12 10:21:57

正則表達(dá)式

2024-09-14 09:18:14

Python正則表達(dá)式

2009-08-24 17:14:41

正則表達(dá)式C#和.NET框架

2009-03-24 08:56:15

正則表達(dá)式格式清理字符串

2009-10-30 14:21:00

VB.NET開發(fā)語(yǔ)言

2010-01-05 17:46:04

.NET Framew
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 99久久精品免费看国产免费软件 | 国产女人与拘做受视频 | 精品一区二区在线观看 | 精品少妇一区二区三区在线播放 | 久久国产视频网站 | 超碰婷婷 | 欧美中文字幕一区 | 国产99久久久国产精品下药 | 久久久久国产精品午夜一区 | 在线观看成人小视频 | 国产在视频一区二区三区吞精 | 国产精品视频久久久 | 日韩高清中文字幕 | 拍戏被cao翻了h承欢 | 日本免费小视频 | 日本精品视频一区二区三区四区 | 男人天堂网av | 久久精品日产第一区二区三区 | 欧美黑人一区二区三区 | 国产成年人视频 | 一级一片在线观看 | 天天久久 | 日韩美女一区二区三区在线观看 | 欧美日韩在线观看一区二区三区 | 国产一二三视频在线观看 | 精品在线免费观看视频 | 欧美 日韩 中文 | 亚洲精品中文字幕中文字幕 | 久久久久久久一区 | 天天操天天插 | 九色国产 | 久久久久久久久中文字幕 | 成人av网站在线观看 | 福利视频一区 | 国产视频亚洲视频 | 国产成人一区二区三区久久久 | 国产精品乱码一区二三区小蝌蚪 | 超碰97人人人人人蜜桃 | 国产一区二区三区免费 | 国产精品免费一区二区三区四区 | 国产一区二区三区网站 |