请提供一个用C#.NET编写正则表达式的解决方案,如下所示:我需要非字母表(a到z;A到Z)和非数字(0到9)的RegEx。意思是以相反的方式获取非字母和非数字(0到9)的正则表达式。
对于同样的问题,敬请提出解决方案。
发布于 2009-11-18 17:34:49
您可以在此处使用:
[^a-zA-Z0-9]上面的正则表达式将匹配单个字符,该字符不能是拉丁小写或大写字母或数字。
character类开头的^ ( [和]之间的部分)否定整个类,以便它匹配类之外的任何内容,而不是正常的character类行为。
要使其有用,您可能需要其中之一:
^a-zA-Z0-9*
这里的星号(*)表示前面的部分可以重复零次或多次。
^a-zA-Z0-9+
这里的加号(+)表示前面的部分可以重复一次或多次。
^^a-zA-Z0-9*$
在这里,字符^和$的含义为,分别与字符串的开头和结尾匹配。这可确保整个字符串由不在该字符类中的字符组成,并且在这些字符之前或之后没有其他字符。
^^a-zA-Z0-9+$
详细地说,这不会(也不能)确保您不会使用任何其他字符,可能来自其他脚本。字符串аеΒ对于上面的正则表达式是完全有效的,因为它使用希腊语和西里尔语字母。此外,还有其他陷阱。字符串á将在正则表达式上传递,而字符串́a不会(因为它由字母a和组合变音符号构成字母a)。
因此,有时必须小心处理否定的字符类。
我也可以使用其他脚本中的数字,如果我想的话:١٢٣ :-)
您可以使用character类
[^\p{L&}\p{Nd}]如果你需要处理上面的事情。
发布于 2009-11-18 17:34:52
只需否定这个类:
[^A-Za-z0-9]
发布于 2009-11-18 17:41:14
要遵守本地设置,请使用:
[^[:alnum:]]https://stackoverflow.com/questions/1754758
复制相似问题