C# 当前正则表达式中的空格

C# 当前正则表达式中的空格,c#,html,regex,whitespace,C#,Html,Regex,Whitespace,我目前正在使用下面的正则表达式:^[^&\“'/]*$,我还想添加一个验证,用户不能只在我的文本框的开头输入空格。有什么想法吗?请注意:空格是允许的,但不能作为第一个元素这里要做的是否定的前瞻:^(?![^&\“\/]*$ (?!)仅当下一个字符不是空格时表示匹配。因为这正好在^锚之后,这本质上意味着仅当第一个字符不是空格时才匹配。这里有另一个选项:您可以通过向正则表达式中添加\p{Zs}Unicode类别来允许键入任何空格(硬空格或常规空格) 为了确保仍然可以匹配空字符串,您需要在字符串开头使

我目前正在使用下面的正则表达式:
^[^&\“'/]*$
,我还想添加一个验证,用户不能只在我的文本框的开头输入空格。有什么想法吗?请注意:空格是允许的,但不能作为第一个元素这里要做的是否定的前瞻:
^(?![^&\“\/]*$


(?!)
仅当下一个字符不是空格时表示匹配。因为这正好在
^
锚之后,这本质上意味着仅当第一个字符不是空格时才匹配。

这里有另一个选项:您可以通过向正则表达式中添加
\p{Zs}
Unicode类别来允许键入任何空格(硬空格或常规空格)

为了确保仍然可以匹配空字符串,您需要在字符串开头使用定位的前瞻(也就是说,您必须在字符串定位的开始之后立即使用它):

^(?!\p{Zs})[^&“'/]*$
//^^^^^^^^^        
我强烈建议使用来声明正则表达式,因为您不必考虑需要使用多少反斜杠:

var rx = new Regex(@"^(?!\p{Zs})[^&<>""'/]*$");
var rx=new Regex(@“^(?!\p{Zs})[^&'/]*$”;
请注意,您需要在这些文本中使用双引号来声明单个双引号

:

var rx=new Regex(@“^(?!\p{Zs})[^&'/]*$”;
Console.WriteLine(rx.IsMatch(“”);//true-空字符串
Console.WriteLine(rx.IsMatch(“sapceAtStart”);//false-开始时的空格
Console.WriteLine(rx.IsMatch(“sapceAtStart”);//false-开始时的硬空间
Console.WriteLine(rx.IsMatch(“开始时没有空格”);//true-开始时没有空格

只需将其添加到字符类:
^[^&\'/]*$
@“^[^&'/\p{Zs}]*$”
。感谢您的快速回复!!我的错误是我没有正确地解释我自己…我的意思是我不希望用户以空格开始,或者让文本框为空,只放一个空格@sonerGive几个有效和无效的输入示例??然后尝试
^(?=\\P{Zs})[^&\“'/]*$
。注意,这种方法只能控制文本的常规空格。您可以使用
\P{Zs}
控制任何水平空白。我避免使用
\p
语法,除非绝对必要,因为它没有被广泛接受。在这种情况下,它在JavaScript中不起作用,问题是Regex用于HTML验证。
var rx = new Regex(@"^(?!\p{Zs})[^&<>""'/]*$");
var rx = new Regex(@"^(?!\p{Zs})[^&<>""'/]*$");
Console.WriteLine(rx.IsMatch("")); // true - empty string
Console.WriteLine(rx.IsMatch(" sapceAtStart")); // false - space at start
Console.WriteLine(rx.IsMatch(" sapceAtStart")); // false - Hard space at start
Console.WriteLine(rx.IsMatch("space not at start")); // true - space not at start