用于非字母和非数字的正则表达式
问题描述:
请提供一个解决方案,在C#.NET中编写如下正则表达式: 我需要针对非字母(a到z; A到Z)的正则表达式,数字(0到9)。 意思是说,除了字母和其他数字(0到9)之外,获得正则表达式的反向方式。用于非字母和非数字的正则表达式
请提出相同的解决方案。
答
您可以使用这里negated character class:
[^a-zA-Z0-9]
上述正则表达式匹配单个字符,不能是一个拉丁大写或小写字母或数字。
的^
在字符类([
和]
之间的部分)开始否定完整的类,以便它匹配的不是普通字符类的行为在任何类不。
为了让它有效的,你可能想其中的一个:
-
零个或多个这样的人物
[^a-zA-Z0-9]*
星号(
*
)这里意味着前面的部分可以重复零或更多次。 -
一个或多个这种字符
[^a-zA-Z0-9]+
加号(
+
)这里意味着前述部分可以重复一次或多次。 -
一个完整的(可能为空)串,仅由这样的字符
^[^a-zA-Z0-9]*$
这里字符
^
和$
具有含义anchors,分别匹配串的开始和结束。这可以确保整个字符串由不在该字符类中的字符组成,并且在其之前或之后不会有其他字符。 -
一个完整的(非空)字符串,仅由这些字符
^[^a-zA-Z0-9]+$
阐述了一下,这不会(和不能够)确保你不会使用任何其他字符,可能来自其他脚本。字符串аеΒ
对上述正则表达式完全有效,因为它使用希腊语和西里尔文的字母。此外还有其他缺陷。字符串á
将通过上面的正则表达式,而字符串́a
不会(因为它从字母a和组合变音标记构造字母á)。
所以否定的字符类有时需要小心。
我也可以用数字从其它脚本,如果我想:١٢٣
:-)
可以使用字符类
[^\p{L&}\p{Nd}]
,如果你需要采取上面的东西照顾。
答
只是否定类:
[^A-Za-z0-9]
谢谢。 谢谢。 谢谢。 谢谢。 :) – sukumar 2009-11-18 09:44:19
哎呀...手指记忆。 :-(fixed :-) – beggs 2009-11-18 10:53:59