注意:JavaScript的正则表达式跟.net的正则表达式有些差异。
来源:互联网 发布:js改变css文件 编辑:程序博客网 时间:2024/05/05 15:14
这两天,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解决问题的帐号被保留外,其他都会被删除。
- 注意:JavaScript的正则表达式跟.net的正则表达式有些差异。
- 注意:JavaScript的正则表达式跟.net的正则表达式有些差异。 -zz
- JavaScript的正则表达式跟.net的正则表达式有些差异。
- JavaScript 的正则表达式
- JAVASCRIPT的正则表达式
- javascript的正则表达式
- javascript的正则表达式
- javascript的正则表达式
- JavaScript的正则表达式
- JavaScript的正则表达式
- Javascript的正则表达式
- javascript的正则表达式
- javascript的正则表达式
- javascript的正则表达式
- JavaScript的正则表达式
- paip.c++ 正则表达式的应用跟普通正则表达式的区别以及特别注意点总
- javascript正则表达式的写法
- javascript的正则表达式匹配
- 在UNIX系统中找出黑客
- 为Asp.net应用程序设置构建Web服务
- 用.NET创建Windows服务
- DataGrid应用样式文件定义动态样式
- http://blog.csdn.net/mini/archive/2004/06/29/29757.aspx
- 注意:JavaScript的正则表达式跟.net的正则表达式有些差异。
- ERP中P是什麼?
- http://blog.csdn.net/arielxp/archive/2004/06/27/27929.aspx
- Ibatis2.0使用说明(一)——入门实例篇[原]
- 大学生网络利用情况分析
- 奥运火热进行中
- 備份服務器端SQL SERVER數據庫至本地目錄
- zt:ORACLE的数据类型
- 多域控制器环境下Active Directory灾难恢复