我的用户不允许为输入字段提供大量单词。我这样抓住这些:
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);
也不允许用户输入连字符。我无法解决它在这个正则表达式中的位置。任何人?
答案 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(...)