您的位置:首页 > Web前端 > JavaScript

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 ghj1976
BTW: 为啥英美人士可以用他们自己的文字作为自己的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 ghj1976
aaa_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 f
xx就是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+就是不包括中文罗

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息