我需要在C#中使用正则表达式来验证TextBox。我需要在ValidationExpress中为ASP.NET中的验证控件添加此角色。正则表达式不应该允许这样:
有什么想法吗?
答案 0 :(得分:2)
无需正则表达式。
if (string.StartsWith(" ") || string.EndsWith(" ") || string.Contains(" ")) throw...
答案 1 :(得分:2)
我相信你想要:
if (myText.Split(" ", StringSplitOptions.RemoveEmptyEntries).Length !=
myText.Split(" ").Length)
{
//String contains multiple spaces
}
正如你现在所说的,你想要正则表达式,我会使用
@"\s\s+"
匹配两个或更多个空格或:
@"\ \ +"
匹配两个或多个空格。
答案 2 :(得分:2)
如果您仅限于验证字符串,请尝试以下模式(example):
^[ ]?([^ ]+[ ])*[^ ]*$
它不允许在字符串中的任何位置包含两个空格的字符串。顺便说一下,这种模式忽略了制表符和换行符。我已经选择了[ ]
,因此您可以看到空格,但是一个简单的空间是相同的。 \s
可能不适合您。例如,它可能与Windows新行\r\n
匹配。
同样,您可以使用否定前瞻(example):
^(?!.*[ ]{2})
如果您使用的是客户端验证器,则需要从头到尾进行匹配,因此请使用模式(?!.*[ ]{2}).*
。它隐含地在您的模式周围添加^...$
无论哪种方式,考虑使用自定义验证器并编写一行简单的代码来否定搜索两个空格。这是它的完成方式。首先,look at the documentation在页面中添加JavaScript函数:
function noTwoSpaces(source, arguments) {
arguments.IsValid = (arguments.Value.indexOf(' ') == -1);
}
接下来,添加CustomValidator
控件以使用它:
<asp:CustomValidator ID="CustomValidator1" runat="server"
ControlToValidate="TextBox1" Display="Dynamic" ErrorMessage=":-("
ClientValidationFunction="noTwoSpaces"></asp:CustomValidator>
就是这样。比难以捉摸的正则表达容易得多。
答案 3 :(得分:1)
var rex = new Regex(@“\ s {2,}”);
编辑:没有看到字符串的开头/结尾。
string poo = "a b";
string poo1 = "a b";
string poo2 = "a b";
string poo3 = "a b";
string poo4 = " a b";
string poo5 = "a b ";
string poo6 = " a b ";
string poo7 = " a b ";
var rex = new Regex(@"^\s{0}.\s{0,1}.\s{0}$");
Console.WriteLine(rex.IsMatch(poo));
Console.WriteLine(rex.IsMatch(poo1));
Console.WriteLine(rex.IsMatch(poo2));
Console.WriteLine(rex.IsMatch(poo3));
Console.WriteLine(rex.IsMatch(poo4));
Console.WriteLine(rex.IsMatch(poo5));
Console.WriteLine(rex.IsMatch(poo6));
Console.WriteLine(rex.IsMatch(poo7));
返回:
True False False False False False False False
因为唯一有效的字符串是第一个。
答案 4 :(得分:0)
如果您想使用正则表达式,请使用:
{2,}
(注意:括号前有空格)。
答案 5 :(得分:0)
可以在没有正则表达式的情况下完成,但是如果不使用正则表达式则不太明显:
\s{2,}
或\s\s+
如果.NET不支持match-min-max语法(我不记得)。
答案 6 :(得分:0)
像
这样的东西string s = " tada bling zap ";
Regex reg = new Regex(@"\s\s+");
MatchCollection m = reg.Matches(s);
答案 7 :(得分:0)
开头和结尾没有空格^[^\s](.*\s.*)+[^\s]$
Mary bought a shoe
匹配
MarySqeezeIntoAshoe
没有匹配