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

suk*_*mar 6 c# regex

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

请提出相同的解决方案.

Joe*_*oey 19

你可以在这里使用否定的字符类:

[^a-zA-Z0-9]
Run Code Online (Sandbox Code Playgroud)

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

^在字符类(之间的部分的起始[])否定以便它匹配任何完整的类不是在类,而不是普通字符类的行为.

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

  1. 零个或多个此类字符

    [^a-zA-Z0-9]*
    
    Run Code Online (Sandbox Code Playgroud)

    这里的星号(*)表示前一部分可以重复零次或多次.

  2. 一个或多个这样的角色

    [^a-zA-Z0-9]+
    
    Run Code Online (Sandbox Code Playgroud)

    这里的加号(+)表示前一部分可以重复一次或多次.

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

    ^[^a-zA-Z0-9]*$
    
    Run Code Online (Sandbox Code Playgroud)

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

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

    ^[^a-zA-Z0-9]+$
    
    Run Code Online (Sandbox Code Playgroud)

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

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

我也可以使用其他脚本中的数字,如果我想:???:-)

您可以使用字符类

[^\p{L&}\p{Nd}]
Run Code Online (Sandbox Code Playgroud)

如果你需要照顾上面的事情.


beg*_*ggs 6

只是否定该类:

[^A-Za-z0-9]