C# 如何确定用户是否输入了连字符?
我的用户不允许为输入字段提供大量单词。我是这样抓到的:C# 如何确定用户是否输入了连字符?,c#,regex,hyphen,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); 用户也不允许只输入连字符。我无法计算它在这个正则表达式中的位置。有人
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);
用户也不允许只输入连字符。我无法计算它在这个正则表达式中的位置。有人吗 您可以创建另一个正则表达式来检查连字符字符,这将有助于您的代码干净易读:
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(...)
刚刚测试:您确实只需要在模式的开头添加
-|
,以匹配任何连字符,并且-据我所知,您的代码逻辑-如果用户键入-
,她/他将收到警告:
-|(^|\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
}
请参见只需在开头添加
-
,并对n/a
进行转义,如下所示:n\/a
No\/
在C中是必需的。.NET正则表达式中没有正则表达式分隔符,/
不是一个特殊的正则表达式字符。为了澄清:在C中不需要\/
,意味着在.NET正则表达式模式中不需要转义正斜杠。@user2301328:有任何反馈吗?