又發(fā)現(xiàn)了一個(gè) .net 的bug!最近在使用正則表達(dá)式的時(shí)候發(fā)現(xiàn):在忽略大小寫的時(shí)候,匹配值從 0xff 到 0xffff 之間的所有字符,正則表達(dá)式竟然也能匹配兩個(gè) ASCII 字符:i(code: 0x69) 和 I(code: 0x49);但是仍然不能匹配其他的 ASCII 字母和數(shù)字。 比如以下的代碼就是用來(lái)測(cè)試用正則表達(dá)式匹配從 0xff 到 0xffff 的字符。而值范圍在 0 到 0xfe 的所有字符是不能被匹配的。 這時(shí)的運(yùn)行結(jié)果是正常的,沒(méi)有任何的斷言錯(cuò)誤出現(xiàn)。 然而當(dāng)使用忽略大小寫的匹配模式時(shí),結(jié)果就不一樣了。將上面代碼中的第一行改成: 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)行就是沒(méi)有問(wèn)題的。還是 Firefox 好啊,呵呵! |
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注