asp.NET開(kāi)發(fā)中正則表達(dá)式中BUG分析
比如以下的代碼就是用來(lái)測(cè)試用正則表達(dá)式匹配從 0xff 到 0xffff 的字符。而值范圍在 0 到 0xfe 的所有字符是不能被匹配的。
以下為引用的內(nèi)容:
Regex regex = new Regex(@"[/u00FF-/uFFFF]+");
// The characters, whoes value are smaller than 0xff,
// are not expected to be matched.
for (int i = 0; i <0xff; i++) {
string s = new string(new char[] { (char)i });
Debug.Assert(!regex.IsMatch(s), string.Format(
"The character was not expected to be matched: 0x{0:X}!", i));
}
// However, the characters whoes value
// are greater than 0xfe are expected to be matched.
for (int i = 0xff; i <= 0xffff; i++) {
string s = new string(new char[] { (char)i });
Debug.Assert(regex.IsMatch(s), string.Format(
"The character was expected to be matched: 0x{0:X}!", i));
}
這時(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 好啊,呵呵!
以下為引用的內(nèi)容:
var re = /[/u00FF-/uFFFF]+/;
// var re = /[/u00FF-/uFFFF]+/i;
for(var i=0; i<0xff; i++) {
var s = String.fromCharCode( i );
if ( re.test(s) ) {
alert( 'Should not be matched: ' + i + '!' );
}
}
for(var i=0xff; i<=0xffff; i++) {
var s = String.fromCharCode( i );
if ( !re.test(s) ) {
alert( 'Should be matched: ' + i + '!' );
}
}
相關(guān)文章
.NET?Core利用BsonDocumentProjectionDefinition和Lookup進(jìn)行?join?
這篇文章主要介紹了.NET?Core利用BsonDocumentProjectionDefinition和Lookup進(jìn)行join關(guān)聯(lián)查詢,這里主要介紹一下查詢角色的所有用戶的例子,文章結(jié)合實(shí)例代碼給大家詳細(xì)講解,需要的朋友可以參考下2022-10-10
ASP.NET?Core中的策略授權(quán)和ABP授權(quán)
這篇文章介紹了ASP.NET?Core中的策略授權(quán)和ABP授權(quán),文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-02-02
Asp.Net服務(wù)器發(fā)送HTTP標(biāo)頭后無(wú)法設(shè)置內(nèi)容類型的問(wèn)題解決
這篇文章主要給大家介紹了Asp.Net服務(wù)器發(fā)送HTTP標(biāo)頭后無(wú)法設(shè)置內(nèi)容類型問(wèn)題的解決方法,文中介紹的非常詳細(xì),對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起看看吧。2017-05-05
輕量級(jí)ORM框架Dapper應(yīng)用之實(shí)現(xiàn)DTO
本文詳細(xì)講解了使用Dapper實(shí)現(xiàn)DTO的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-03-03
ASP.NET開(kāi)源導(dǎo)入導(dǎo)出庫(kù)Magicodes.IE完成Csv導(dǎo)入導(dǎo)出的方法
這篇文章主要介紹了ASP.NET開(kāi)源導(dǎo)入導(dǎo)出庫(kù)Magicodes.IE完成Csv導(dǎo)入導(dǎo)出的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-06-06
.net設(shè)計(jì)模式之裝飾模式(Decorator)
這篇文章主要為大家詳細(xì)介紹了.net設(shè)計(jì)模式之裝飾模式Decorator,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-06-06
ASP.NET AJAX 4.0的模版編程(Template Programming)介紹
不過(guò)當(dāng)我評(píng)估ASP.NET AJAX 4.0的時(shí)候,我確實(shí)被它的特征給震住了。新的特征完全專注于瀏覽器技術(shù),比如XHTML和javascript。 我非常欽佩ASP.NET AJAX小組。2009-07-07
一個(gè)簡(jiǎn)單的asp.net 單點(diǎn)登錄實(shí)現(xiàn)
上次做了學(xué)校的火車訂票系統(tǒng),那邊要求要從學(xué)生信息平臺(tái)直接點(diǎn)過(guò)來(lái)就是登錄狀態(tài),不用在重新登錄。學(xué)生信息平臺(tái)原來(lái)是用asp做的,而火車訂票系統(tǒng)是asp.net做的。兩個(gè)網(wǎng)站的學(xué)生信息調(diào)用的是同一個(gè)數(shù)據(jù)庫(kù)。2009-11-11

