繁体   English   中英

Winforms 文本框允许用户只输入字母、数字、点和单词之间的空格。 正则表达式

[英]Winforms textbox allow user to input only letters, numbers, dots and spaces between words. Regex

大家好,在我的桌面应用程序中,我想创建正则表达式模式以允许用户仅插入LETTRRSNUMBERS_ -. .

例子:

公司名称只能包含以下字符:

  • 测试公司1
  • Second_公司
  • 最佳公司 123
  • My-Company doo
  • Stack.Oveflow-Company_

我尝试什么:

 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM