[英]Winforms textbox allow user to input only letters, numbers, dots and spaces between words. Regex
大家好,在我的桌面应用程序中,我想创建正则表达式模式以允许用户仅插入LETTRRS
、 NUMBERS
和_ -.
.
例子:
公司名称只能包含以下字符:
我尝试什么:
string companyName = "My Company #%";
if(Regex.IsMatch(companyName, @"^[a-zA-Z0-9_.-]+$"))
{
MessageBox.Show("Company name contain invalid characteds");
}
else
{
// success
}
但这不起作用。
我只需要那个用户只能输入:
字母、数字、点、下划线、 -
和单词之间的特殊字符所有其他名称中不允许的特定字符。
我在正则表达式模式中有错误吗?
您忘记包含空格字符。 正如评论中提到的,你的逻辑是相反的:
if (Regex.IsMatch(companyName, @"^([a-zA-Z0-9_.-]|\s)+$"))
{
Console.WriteLine("Valid");
}
else
{
Console.WriteLine("Company name contains invalid characters");
}
正如 Wiktor Stribiżew 在评论中指出的那样,您的逻辑表明,当有一个有效的模式
if(Regex.IsMatch(companyName, @"^[a-zA-Z0-9_.-]+$"))
然后显示:
MessageBox.Show("Company name contain invalid characteds");
应该反过来。
您可以在重复模式中使用点和连字符作为字符 class [-.]
中的分隔符。
如果将它们作为第一部分放置,它们将不会在开头和结尾匹配。
然后,您可以使用与第一部分相同的逻辑使用另一个重复模式,这次前面有一个空格。
^[a-zA-Z0-9_]+(?:[-.][a-zA-Z0-9_]+)*(?: [a-zA-Z0-9_]+(?:[-.][a-zA-Z0-9_]+)*)*$
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.