WinForms TextBox输入校验:如何仅允许M/N开头且含至少两个点的输入
WinForms TextBox 输入校验实现方案
你可以通过基础字符串方法直接实现校验,逻辑清晰无需额外引入命名空间,修改后的SaveText_Click代码如下:
private void SaveText_Click(object sender, EventArgs e) { // 替换为你实际的TextBox控件的Name属性值 string input = yourTextBox.Text.Trim(); // 执行规则校验 bool isValid = !string.IsNullOrEmpty(input) // 规则1:以N或M开头,默认区分大小写;需要支持小写n/m的话可添加StringComparison.OrdinalIgnoreCase参数 && (input.StartsWith("N") || input.StartsWith("M")) // 规则2:至少包含2个点 && input.Count(c => c == '.') >= 2; if (isValid) { MainNotifs.Show(this, "Attached !"); attachment = true; } else { // 可选:校验不通过时弹出错误提示,不需要可删除 MainNotifs.Show(this, "输入不符合规则:需以N/M开头且至少包含两个点"); attachment = false; } }
如果你偏好使用正则实现,可引入System.Text.RegularExpressions命名空间后,用正则规则做校验:
- 匹配规则写为
^[NM][^.]*\.[^.]*\..*$,可直接命中满足两个要求的字符串 - 对应校验代码替换为
bool isValid = Regex.IsMatch(input, @"^[NM][^.]*\.[^.]*\..*$");即可
注意事项
- 代码中的
yourTextBox必须替换为你项目里对应TextBox控件的实际名称 - 若需要支持小写n/m开头,正则规则可调整为
^[NMnM][^.]*\.[^.]*\..*$,或者给Regex.IsMatch方法添加RegexOptions.IgnoreCase参数
内容的提问来源于stack exchange,提问作者shdwrv
相关产品推荐
相关产品推荐

