我想限制 用户输入 字符  !@#$ 怎么写正则表达试也就是不允许用户输入 字符 !@#$

解决方案 »

  1.   

    linuxyf(率人哥哥) ^((?![!|@|#|$]).)*$
    这是正确的能解释一下为什么吗?
    说明一下:^((?![!|@|#|$]).)*$ 和 [^!@#$]*  的区别  谢谢 欢迎其他高手解释
      

  2.   

    先来说一下[^!@#$]*,匹配除!,@,#,$以外的所有字符,如:dfdaf!dfdafi@fdasfd#fdafdf$fdasfd
    匹配结果会是  
    dfdaf
    dfdafi
    fdasfd
    fdafdf
    fdasfd再来说一下^((?![!|@|#|$]).)*$,匹配不包含! @ # $字符的字符串。例如:
    dfdaf!dfdafi@fdasfd#fdafdf$fdasfd,不能匹配,因为它包含了四个非法字符,只要包含其中一个字符,都不能匹配成功。
      

  3.   

    linuxyf(率人哥哥)我留意了你一下你的文字,你提到了 匹配 两个字 我想请问 这个匹配有什么呢?帮助文档里面也有这个字 匹配。如果你能说明一下匹配的意义或者用处 举例说明最好。
    我会非常感谢你的。CSDN就需要你这样的人或者朋友。继续讨论我们的话题:
    我现在的目的是 检查一个字符串,不允许包含 !@#$ 这四个字符。^((?![!|@|#|$]).)*$ 和 [^!@#$]*   之间 我测试的好象都通过了,至少在ASP.NET2.0 C#
    RegularExpressionValidator 控件 测试通过当然 我知道 [^!@#$] 的含义是除了!@#$ 之外的任意一个字符. * 修饰匹配次数为 0 次或任意次。请你把^((?![!|@|#|$]).)*$ 拆开说解释一下  谢谢
      

  4.   

    我们把^((?![!|@|#|$]).)*$ 分成两部分来看: ^((?!regex).)*$   和   [!|@|#|$]先来看^((?!regex).)*$
    这个pattern是一个定式,含义是匹配不包含regex这个字符串的字符串,下围棋的时候有定式,那么在正则中也有定式,这就是一个,记住就可以了,如果你非要拆开它看,反而不太容易理解。再来看[!|@|#|$],这个就比较简单了,就是匹配四个字符中的任意一个。
      

  5.   

    [^!@#$]:Match a single character NOT present in the list "!@#$" [^!@#$]*   这个pattern对于  "abaa!", 则会匹配成功,如果你取匹配结果,则会取出"abaa".^((?![!|@|#|$]).)*$ 这个pattern对于"abaa!", 则匹配不成功。