正则表达式为非字母和非数字

时间:2009-11-18 09:33:11

标签: c# regex

请提供在C#.NET中编写正则表达式的解决方案,如下所示: 我需要一个RegEx for Non-Alphabets(a到z; A到Z)和非数字(0到9)。 意思是说除了字母和其他数字(0到9)之外的正则表达式的反向方式。

请建议相同的解决方案。

3 个答案:

答案 0 :(得分:18)

您可以在此处使用negated character class

[^a-zA-Z0-9]

以上正则表达式将匹配单个字符,该字符不能是拉丁小写字母或大写字母或数字。

字符类开头的^[]之间的部分)否定完整的类,以便它匹配任何内容不是在类中,而不是正常的字符类行为。

为了使它有用,你可能想要其中一个:

  1. 零个或多个此类字符

    [^a-zA-Z0-9]*
    

    此处的星号(*)表示前一部分可以重复零次或多次。

  2. 一个或多个此类字符

    [^a-zA-Z0-9]+
    

    此处的加号(+)表示前一部分可以重复一次或多次。

  3. 一个完整的(可能是空的)字符串,仅包含此类字符

    ^[^a-zA-Z0-9]*$
    

    此处字符^$的含义为anchors,分别与字符串的开头和结尾相匹配。这可以确保整个字符串由不在该字符类中的字符组成,并且在它们之前或之后没有其他字符。

  4. 完整(非空)字符串,仅包含此类字符

    ^[^a-zA-Z0-9]+$
    
  5. 详细说明,这不会(也不能)确保您不会使用任何其他字符,可能来自其他脚本。字符串аеΒ对于上面的正则表达式是完全有效的,因为它使用来自希腊语和西里尔语的字母。此外还有其他陷阱。字符串á将在正则表达式上方传递,而字符串́a将不会传递(因为它构造字母a中的字母and和组合变音符号)。

    因此,有时候必须谨慎对待否定的角色类。

    我还可以使用其他脚本中的数字,如果我想:١٢٣: - )

    您可以使用字符类

    [^\p{L&}\p{Nd}]
    

    如果你需要照顾上述事情。

答案 1 :(得分:2)

只是否定课程:

[^A-Za-z0-9]

答案 2 :(得分:2)

遵守当地环境使用:

[^[:alnum:]]