仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 635|回复: 7
打印 上一主题 下一主题

[学习教程] ASP.NET网站制作之.NET正则表达式中的 Bug

[复制链接]
若相依 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:28:31 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

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

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2025-2-23 19:07

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表