正则表达式不允许空格和特定字符串

时间:2015-04-09 12:44:09

标签: c# regex

我试图在C#中编写一个不允许空格(在开头,结尾或在字符串中)和输入值中的特定字符串的正则表达式。

这就是我所拥有的:@"^((?!string1|string2).)*$"。此模式验证包含string1string2的输入值,但不验证空格。

无效的示例(将_视为空格):

someone@string1.com
someone@string2.com
someone@xyz.com_
_someone@xyz.com
some_one@xyz.com

我想在同一个正则表达式中验证这两个案例。我的正则表达式在哪里错了?

1 个答案:

答案 0 :(得分:0)

您可以添加空格或更好\p{Zs}来匹配空格(或\s也匹配换行符):

^((?!string1|string2|\p{Zs}).)*$

请参阅demo

或者,您可以在任何锚定正则表达式的开头使用否定预测来禁止空格(即为了匹配不带空格的字符串):

(?!^.*\p{Zs}.*$)

你的正则表达式看起来像

@"^(?!.*\p{Zs}.*$)((?!string1|string2).)*$"

请参阅demo