\w真的等效于[a-zA-Z_0-9]吗?
今天我用.net搞点东西发现\w连汉字也匹配,不匹配的只是&<>@(~等非文字符。莫怪我孤陋寡闻,我以前没接触过正则,谁来解释一下?

解决方案 »

  1.   

    没有这么说
    \w等效于[a-zA-Z_0-9]!!!!! 
      

  2.   

    http://www.unibetter.com/deerchao/zhengzhe-biaodashi-jiaocheng-se.htm#h3#h3
    LZ去看看吧 正则不难的
      

  3.   

    等效吗?不等效吗?那要看应用环境在大多数语言(比如javascript,比如TCL)的实现中,\w表示任意一个字母或数字或下划线,也就是 A~Z,a~z,0~9,_ 中任意一个 
     
    但是在.NET中,\w默认会匹配所有合适的Unicode字符,比如中文,全角数字等。只有在加了RegexOptions.ECMAScript参数时,才只匹配ASCII字符,也就是等价于[a-zA-Z0-9_]
     
    所以在明确要求是A~Z,a~z,0~9,_ 中的任意一个字符的时候,用[A-Za-z0-9_],而不用\w