问一下C#里的正则和js里的正则,到底有哪些不同,详细一点

yvesliao 2010-09-17 03:39:47
今天发现C#里使用\w可以验证字母数字中文,而在js里只能验证字母和数字,照理说正则应该是所有语言通用的,怎么会有所不同呢?谁能把正则在两种语言里不同详尽地说一下,直接给个链接也行。
...全文
134 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
yvesliao 2010-09-19
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 lxcnn 的回复:]
引用 2 楼 yvesliao 的回复:
不同的浏览器在处理js正则时,也是不一而同的
--------------------
这是真的吗?天啊,正则都不是通用的啊,还各有一套,晕!


差异体现在很多方面,给你个简单的例子,你分别在IE和Firefox下执行一下看看结果

JScript code
<script type="text/javascript">
var s……
[/Quote]
有区别,IE是3,ff是2,ie里包含了换行,ff里没换行。。。
-过客- 2010-09-17
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 yvesliao 的回复:]
不同的浏览器在处理js正则时,也是不一而同的
--------------------
这是真的吗?天啊,正则都不是通用的啊,还各有一套,晕!
[/Quote]

差异体现在很多方面,给你个简单的例子,你分别在IE和Firefox下执行一下看看结果
<script type="text/javascript"> 
var str = "ab\r\ncd";
var reg = /.+/;
alert(str.match(reg)[0].length);
</script>
jimh 2010-09-17
  • 打赏
  • 举报
回复
最简单一个例子,c#支持命名组,但js只能按顺序去值
yvesliao 2010-09-17
  • 打赏
  • 举报
回复
不同的浏览器在处理js正则时,也是不一而同的
--------------------
这是真的吗?天啊,正则都不是通用的啊,还各有一套,晕!
-过客- 2010-09-17
  • 打赏
  • 举报
回复
正则只有基本语法可通用,细节上随语言千差万别

详尽?不可能的

都别说是C#和js之间的差异了,就算js自身,现在数十种浏览器,不同的浏览器在处理js正则时,也是不一而同的

C#默认是unicode的,所以\w在中文系统下可以匹配中文,而js则不可以,C#中带上RegexOptions.ECMAScript参数,\w的表现就和js中一致了

111,129

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧