仓酷云

标题: ASP.NET网站制作之.NET正则表达式中的 Bug [打印本页]

作者: 若相依    时间: 2015-1-16 22:28
标题: ASP.NET网站制作之.NET正则表达式中的 Bug
前天傍晚我发表了《Java的跨平台就是一句谎言。》,原本就是周末闲来无事,发表一篇略带争议性的博文让大家都来吵吵架,发表自己的看法,根本就没想着谁把谁打倒,一个行业或者是技术阵营是无法用短期口水仗打到对手的。又发明了一个.net的bug!比来在利用正则表达式的时分发明:在疏忽巨细写的时分,婚配值从0xff到0xffff之间的一切字符,正则表达式居然也能婚配两个ASCII字符:i(code:0x69)和I(code:0x49);可是仍旧不克不及婚配其他的ASCII字母和数字。 好比以下的代码就是用来测试用正则表达式婚配从0xff到0xffff的字符。而值局限在0到0xfe的一切字符是不克不及被婚配的。
  1234567891011121314151617Regexregex=newRegex(@"[u00FF-uFFFF]+");
  //Thecharacters,whoesvaluearesmallerthan0xff,arenotexpectedtobematched.
  for(inti=0;i<0xff;i++){
  strings=newstring(newchar[]{(char)i});
  Debug.Assert(
  !regex.IsMatch(s),
  string.Format("Thecharacterwasnotexpectedtobematched:0x{0:X}!",i));
  }
  //However,thecharacterswhoesvaluearegreaterthan0xfeareexpectedtobematched.
  for(inti=0xff;i<=0xffff;i++){
  strings=newstring(newchar[]{(char)i});
  Debug.Assert(
  regex.IsMatch(s),
  string.Format("Thecharacterwasexpectedtobematched:0x{0:X}!",i));
  }
  这时候的运转了局是一般的,没有任何的断言毛病呈现。
  但是当利用疏忽巨细写的婚配形式时,了局就纷歧样了。将下面代码中的第一行改成:
  1Regexregex=newRegex(@"[u00FF-uFFFF]+",RegexOptions.IgnoreCase);
  程序运转的时分就会有两处断言毛病。它们分离是字符值为73和105,也就是小写字母i和年夜写字母I。这个bug十分奇异,其余字符都很一般!并且用javascript剧本在IE(版本是6.0)内里运转也一样有这么bug存在(好比上面这段代码)。但是在Firefox中运转就是没有成绩的。仍是Firefox好啊,呵呵!
  1234567891011121314151617varre=/[u00FF-uFFFF]+/;
  //varre=/[u00FF-uFFFF]+/i;
  for(vari=0;i<0xff;i++){
  vars=String.fromCharCode(i);
  if(re.test(s)){
  alert(Shouldnotbematched:+i+!);
  }
  }
  for(vari=0xff;i<=0xffff;i++){
  vars=String.fromCharCode(i);
  if(!re.test(s)){
  alert(Shouldbematched:+i+!);
  }
  }

就安全性而言,Java已经远远低于VB.NET,更无法与安全性著称的C#相比。
作者: 变相怪杰    时间: 2015-1-19 13:58
HTML:当然这是网页最基本的语言,每一个服务器语言都需要它的支持,要学习,这个肯定是开始,不说了.
作者: 乐观    时间: 2015-1-25 07:13
可以通过在现有ASP应用程序中逐渐添加ASP.NET功能,随时增强ASP应用程序的功能。ASP.NET是一个已编译的、基于.NET的环境,可以用任何与.NET兼容的语言(包括VisualBasic.NET、C#和JScript.NET.)创作应用程序。另外,任何ASP.NET应用程序都可以使用整个.NETFramework。开发人员可以方便地获得这些技术的优点,其中包括托管的公共语言运行库环境、类型安全、继承等等。
作者: 分手快乐    时间: 2015-2-2 17:09
ASP.Net摆脱了以前ASP使用脚本语言来编程的缺点,理论上可以使用任何编程语言包括C++,VB,JS等等,当然,最合适的编程语言还是MS为.NetFrmaework专门推出的C(读csharp)。
作者: 愤怒的大鸟    时间: 2015-2-24 02:26
市场决定一切,我个人从经历上觉得两者至少在很长时间内还是要共存下去,包括C和C++,至少从找工作就看得出来,总不可能大家都像所谓的时尚一样,追捧一门语言并应用它。
作者: 柔情似水    时间: 2015-3-7 10:33
主流网站开发语言之CGI:CGI就是公共网关接口(CommonGatewayInterface)的缩写。它是最早被用来建立动态网站的后台技术。这种技术可以使用各种语言来编写后台程序,例如C,C++,Java,Pascal等。
作者: 灵魂腐蚀    时间: 2015-3-15 00:15
平台无关性是PHP的最大优点,但是在优点的背后,还是有一些小小的缺点的。如果在PHP中不使用ODBC,而用其自带的数据库函数(这样的效率要比使用ODBC高)来连接数据库的话,使用不同的数据库,PHP的函数名不能统一。这样,使得程序的移植变得有些麻烦。不过,作为目前应用最为广泛的一种后台语言,PHP的优点还是异常明显的。
作者: 爱飞    时间: 2015-3-21 15:43
逐步缩小出错代码段的范围,最终确定错误代码的位置。




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2