ASP.NET - 用于排除特定字符的正则表达式

时间:2012-01-31 10:24:11

标签: c# asp.net regex

我需要一个可以接受所有字母(区分大小写的A-Z),数字(0-9),空格和大多数字符的正则表达式。该字段不得接受带重音的字符(ÁÉÚÍÓ),制表符或以下字符:反斜杠(),小于(<),大于(>),代字号(〜),等于(=),双引号(“ )或逗号(,)

关于我需要什么样的正则表达式的任何想法?

2 个答案:

答案 0 :(得分:3)

这样的事情应该有效:

^([A-Za-z0-9 ]+)$

它将匹配foo bar 1234 FOO BAR但不匹配foo bar 1234 FOO BAR ddfoo bar 1234 FOO BAR\

注意:然后,您可以在方括号内添加大多数字符

修改:foo bar 1234 FOO BAR dd包含一个标签(\t)字符,但它正在缩小。

答案 1 :(得分:3)

我认为这应该是你想要的角色

(?:[^\p{L}\\<>~=",\t]|[A-Za-z])

[]表示一个字符类,你可以将所有字符放入,你想要允许

[^]表示否定的字符类,不允许使用内部的所有字符。

所以,我不知道一个包含所有不在A-Z中的字母的预定义类,因此我会进行替换。

第一个否定的类包含\p{L}中的所有字母,其余字符是您不希望允许的其他字符,但由于您要允许A-Z他们也在\p{L},你必须再次允许他们。这是在第二部分(|是一个替代)中完成的,我允许[A-Za-z]

所以完整的正则表达式看起来应该是这样的

^(?:[^\p{L}\\<>~=",]|[A-Za-z])+$