如何确定用户是否输入了连字符?

时间:2015-12-14 09:57:06

标签: c# regex hyphen

我的用户不允许为输入字段提供大量单词。我这样抓住这些:

 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);

也不允许用户输入连字符。我无法解决它在这个正则表达式中的位置。任何人?

2 个答案:

答案 0 :(得分:0)

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

-|(^|\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

答案 1 :(得分:-1)

您可以创建另一个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(...)