今天发现C#里使用\w可以验证字母数字中文,而在js里只能验证字母和数字,照理说正则应该是所有语言通用的,怎么会有所不同呢?谁能把正则在两种语言里不同详尽地说一下,直接给个链接也行。

解决方案 »

  1.   

    正则只有基本语法可通用,细节上随语言千差万别详尽?不可能的都别说是C#和js之间的差异了,就算js自身,现在数十种浏览器,不同的浏览器在处理js正则时,也是不一而同的C#默认是unicode的,所以\w在中文系统下可以匹配中文,而js则不可以,C#中带上RegexOptions.ECMAScript参数,\w的表现就和js中一致了
      

  2.   

    最简单一个例子,c#支持命名组,但js只能按顺序去值
      

  3.   


    差异体现在很多方面,给你个简单的例子,你分别在IE和Firefox下执行一下看看结果
    <script type="text/javascript"> 
    var str = "ab\r\ncd";
    var reg = /.+/;
    alert(str.match(reg)[0].length);
    </script>
      

  4.   

    有区别,IE是3,ff是2,ie里包含了换行,ff里没换行