【问题标题】:how to determine if the user has input a hyphen?如何确定用户是否输入了连字符?
【发布时间】:2015-12-14 09:57:06
【问题描述】:

我的用户不允许为输入字段提供一堆字词。我是这样捕捉这些的:

 Regex invalidWordPatten = new Regex(@"(^|\s)\b(test|unknown|as above|soos bo|na|n/a|delete|u|none|geen|0|ontbreek|nil|same as|no address available|same as)\b", RegexOptions.IgnoreCase);

用户也不能只输入连字符。我无法弄清楚它在这个正则表达式中的位置。任何人?

【问题讨论】:

  • 在开头加-|即可。
  • ...转义n/a,像这样:n\/a
  • 没有 \/ 在 C# 中是必需的。 .NET 正则表达式中没有正则表达式分隔符,/ 不是特殊的正则表达式字符。
  • 澄清一下:在 C# 中不需要 \/ 意味着 在 .NET 正则表达式模式中不需要转义正斜杠
  • @user2301328:有什么反馈吗?

标签: c# regex hyphen


【解决方案1】:

刚刚测试过:您真的只需要在模式的开头添加-| 以匹配任何连字符并且-据我了解您的代码逻辑-如果用户键入-,她/他将收到警告:

-|(^|\s)\b(test|unknown|as above|soos bo|na|n/a|delete|u|none|geen|0|ontbreek|nil|same as|no address available|same as)\b
^^

那么,我猜你有类似的东西

if (invalidWordPatten.IsMatch(input))
{
    MessageBox.Show("Incorrect input!", "Error"); // or any other handling code part
}

regex demo

【讨论】:

    【解决方案2】:

    您可以创建另一个 RegEx 来检查连字符,这将有助于您的代码干净且易于阅读:

    Regex hyphenChar = new Regex(@"\b[^-]+\b", RegexOptions.IgnoreCase);
    Regex invalidWordPatten = new Regex(@"(^|\s)\b(test|unknown|as above|soos bo|na|n/a|delete|u|none|geen|0|ontbreek|nil|same as|no address available|same as)\b", RegexOptions.IgnoreCase);
    
    var isNotMatch = hyphenChar.Match(...) && invalidWordPatten.Match(...)
    

    【讨论】:

      猜你喜欢
      • 2023-04-04
      • 1970-01-01
      • 2019-03-09
      • 2013-10-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-28
      • 1970-01-01
      相关资源
      最近更新 更多