JavaScript的正则表达式跟.net的正则表达式有些差异。
2007-04-05 12:10
519 查看
注意:JavaScript的正则表达式跟.net的正则表达式有些差异。
2004年8月17日 13:31 - (阅读:8188;评论:27)这两天,CSDN出现了有人注册中文ID的情况,CSDN 是不允许正常途径注册中文ID的,为此在注册页面专门用 asp:regularexpressionvalidator 作了限制,服务器端专门用 IsValid 作了判断。
通过联系网友,网友反馈是:是通过禁用客户端禁用所有js来实现注册中文名的。但我们是服务器端有校验的呀。一直查下去,发现是正则表达式写错了。写成了 ValidationExpression="/w+"
如下禁用所有JS。
查询MSDN的帮助,对 /w 有以下描述:
与任何单词字符匹配。等效于 Unicode 字符类别 [/p{Ll}/p{Lu}/p{Lt}/p{Lo}/p{Nd}/p{Pc}]。如果用 ECMAScript 选项指定了符合 ECMAScript 的行为,则 /w 等效于 [a-zA-Z_0-9]。
晕倒,我以前看的几本书可没有这么说。反查一些关于正则表达式的书,晕倒,很多在对 /w 进行说明的时候,写得就是匹配任一单词字符,包括 A-Z、a-z、0-9和下滑线_ ,而没有提到 Unicode这部分。晕倒,被书害了。
而上面的说法,是JS的说法,以前学习这部分的时候,只是注意看书本内容,没注意看MSDN,害的出了这么一个大漏洞。
把正则表达式修改为: ^[a-zA-Z0-9_]+$ 就修正了这个问题。
置于为啥禁用掉JS,就可以注册中文,原因如下:
如果采用 /w+ 来校验的话:
如果客户端没有禁用JS,在js 这一层的校验,其实是校验的是 [a-zA-Z_0-9] ,
如果用户禁用了JS,在服务器端,它实际是校验的 [/p{Ll}/p{Lu}/p{Lt}/p{Lo}/p{Nd}/p{Pc}]
这样服务器端中文的用户名也校验通过了。
置于在CSDN注册的中文ID,按照CSDN的制度,所有利用非正常途径、CSDN漏洞获得的利益,CSDN都不给与保护。除了少数几个帮助CSDN解决问题的帐号被保留外,其他都会被删除。
反馈
# re: 注意:JavaScript的正则表达式跟.net的正则表达式有些差异。
2004-8-17 13:57 by leighsword现在的CSDN表面看上去焕然一新,其实内部已经烂透了。
我说过多少次了,水源才是CSDN的精华所在,搞技术区是没用的,真正想搞技术的还不是在老外的论坛里混。想当年在水源骂人是多么爽的事,现在的水源什么都不能说,真无趣啊。
# re: 注意:JavaScript的正则表达式跟.net的正则表达式有些差异。
2004-8-17 14:05 by ghj1976不论对网友,对上级来说,他们能接受的方式就是逐步修改,而不是一棍子打死,然后彻底变;
另外,你不想想为啥以前那么自由,是谁弄得现在这么严??这个话题不用讨论太深,讨论太深,这里也要。。。。
# re: 注意:JavaScript的正则表达式跟.net的正则表达式有些差异。
2004-8-17 14:09 by ghj1976想看下一代CSDN的进度,可以参看我在CSDN的Blog:
http://blog.csdn.net/ghj1976/
在哪里,我会逐步公开下一代CSDN的进度,
这里主要是我个人的技术心得。
与csdn有关,但不是技术方面的,不会放这里,而是放到CSDN那个Blog.
与CSDN有关,同时与技术也有关,两边我都会放。
只与技术有关,我会放到这里。
# re: 注意:JavaScript的正则表达式跟.net的正则表达式有些差异。
2004-8-17 14:20 by Lostinet这个东西用正规表达式就不爽了吧。
一般这些东西我都是直接循环字符来判断的。
# re: 注意:JavaScript的正则表达式跟.net的正则表达式有些差异。
2004-8-17 14:30 by 游民我说嘛,怎么水园突然冒出了那么多中文ID
# re: 注意:JavaScript的正则表达式跟.net的正则表达式有些差异。
2004-8-17 14:54 by JGTM'2004 [MVP]所以得到一个教训:对业务逻辑的验证应该由外而内越来越严格,在测试业务逻辑的时候则要从内而外逐层的测试,越是靠近后台数据存储的环节越要保证业务逻辑的正确性。
BTW: 为啥英美人士可以用他们自己的文字作为自己的ID而中国人在CSDN却不可以?呵呵……随便一说,反正我是不再去CSDN了……
# re: 注意:JavaScript的正则表达式跟.net的正则表达式有些差异。
2004-8-17 14:58 by ghj1976BTW: 为啥英美人士可以用他们自己的文字作为自己的ID而中国人在CSDN却不可以?
中国特色,CSDN一直不想被**盯上,但是上次仍然被盯上了,而且损失非常严重,现在一直仍在被盯着。
这就是为啥现在这么严格了。
# re: 注意:JavaScript的正则表达式跟.net的正则表达式有些差异。
2004-8-17 16:25 by 阿勇下次能不能允许使用下划线!
我想找个东西分割一下两个单词都找不到~!都被屏蔽了!
# re: 注意:JavaScript的正则表达式跟.net的正则表达式有些差异。
2004-8-17 16:32 by ghj1976下次能不能允许使用下划线!
我想找个东西分割一下两个单词都找不到~!都被屏蔽了!
??
具体你指哪里??
# re: 注意:JavaScript的正则表达式跟.net的正则表达式有些差异。
2004-8-17 23:02 by DingLi唉!
# re: 注意:JavaScript的正则表达式跟.net的正则表达式有些差异。
2004-8-18 9:09 by 阿勇用户注册的时候!
我想 aaa_bbb,但是不允许!
# re: 注意:JavaScript的正则表达式跟.net的正则表达式有些差异。
2004-8-18 9:15 by ghj1976aaa_bbb 不允许???
错误信息是啥??
# 区别ECMAScript与规范化正则表达式的行为
2004-8-18 11:13 by 梨花飞狐Ping Back来自:blog.csdn.net
# re: 注意:JavaScript的正则表达式跟.net的正则表达式有些差异。
2004-8-18 15:18 by 阿赖.COM学到东西了
# re: 注意:JavaScript的正则表达式跟.net的正则表达式有些差异。
2004-8-18 15:38 by 阿勇非法字符阿!
aaa_bbb是我注册时想用的ID
# re: 注意:JavaScript的正则表达式跟.net的正则表达式有些差异。
2004-8-18 20:48 by ghj1976我不记得 CSDN 有非法字符这样的错误提示信息,把您的具体操作步骤、URL写过来,也好找原因。
# re: 注意:JavaScript的正则表达式跟.net的正则表达式有些差异。
2004-8-19 9:36 by 阿勇刚刚去试了下,发现可以用带下划线的ID注册了!不知道是你们后来改了注册程序,还是我之前的操作有误!搞不清楚了!
顺便问下:如果我注册的ID不想要了能不能删了!?
# re: 注意:JavaScript的正则表达式跟.net的正则表达式有些差异。
2004-8-19 9:39 by ghj1976你没有权限删除。而且我们正常流程不接受用户要求删号的请求。我们必须保证我们数据的完整性。
# re: 注意:JavaScript的正则表达式跟.net的正则表达式有些差异。
2004-8-19 23:55 by 哈哈这借口找的......中文名字跟被xx盯上有什么关系。被xx盯上就不能用中文了?那不如内容也不要用中文。都用英文好了...
# re: 注意:JavaScript的正则表达式跟.net的正则表达式有些差异。
2004-9-9 23:43 by laily允许用中文也不会有什么问题吧
# re: 注意:JavaScript的正则表达式跟.net的正则表达式有些差异。
2004-10-22 13:25 by 就要中文不让用中文ID是不合理,被xx盯上的绝不会中文ID。
# re: 注意:JavaScript的正则表达式跟.net的正则表达式有些差异。
2005-2-22 12:36 by Leo弱弱的问一下,xx是什么东东丫?
# re: 注意:JavaScript的正则表达式跟.net的正则表达式有些差异。
2005-4-8 11:09 by cosmograd回楼上:xx不是一个东西
# re: 注意:JavaScript的正则表达式跟.net的正则表达式有些差异。
2005-6-27 16:31 by fxx就是xx
# re: 注意:JavaScript的正则表达式跟.net的正则表达式有些差异。
2006-3-25 11:36 by 无所谓无所谓了,CSDN现在已经烂透了。
# re: 注意:JavaScript的正则表达式跟.net的正则表达式有些差异。
2006-6-2 0:07 by jamedys想问一下您,.net的/w+是不是也包括中文字符啊可以通过啊,unicode字符集是包括中文,那现在的js/w+就是不包括中文罗
相关文章推荐
- 注意:JavaScript的正则表达式跟.net的正则表达式有些差异。
- 注意:JavaScript的正则表达式跟.net的正则表达式有些差异。
- 注意:JavaScript的正则表达式跟.net的正则表达式有些差异。 -zz
- javascript中正则表达式和ruby中的一点差异
- .net中正则表达式的客户端验证--javascript
- .net中正则表达式的客户端验证--javascript
- JavaScript正则表达式的浏览器的差异
- .net中正则表达式的客户端验证--javascript
- javascript中正则表达式和ruby中的一点差异
- javascript中正则表达式和ruby中的一点差异
- JavaScript 正则表达式02
- javascript 正则表达式格式化数字字符串
- [JavaScript] 正则表达式
- javascript正则表达式中参数g(全局)的作用
- javascript 正则表达式提取数字使用
- JavaScript之正则表达式
- [转载]JavaScript - 正则表达式
- Javascript 正则表达式测试页面
- JavaScript 正则表达式常用的转义符
- JavaScript中的正则表达式操作