首页 > 解决方案 > C# .Net 如何用逗号自动分隔文本框输入

问题描述

我想在我的文本框中允许以下序列。

e.g. 
    09123456789
e.g.
    09123456789,09123456789
e.g.
    09123456789,09123456789,09506724016

输入应以09接下来的九个数字开头。如果输入超过 11 个,则应在末尾自动添加一个逗号,然后应重新开始,09后跟接下来的 9 个数字。

我有这个^(09)\\d{9}只接受第一个序列的正则表达式,但我不知道如何将整个序列应用到我的文本框中。

private void phone_number_TextChanged(object sender, EventArgs e) {
   //validate the textbot to allow only the sequence.
}

标签: c#.netwinforms

解决方案


您的正则表达式仅接受第一个序列,因为它包含输入开始字符^。如果您想检测到是时候添加逗号,请改用逗号09\\d{9}$。也许您也可以为用户预填 09

如果您还想在条目不匹配时将背面颜色变为红色,请考虑检查文本框是否符合以下逻辑:

private Regex _phNum = new Regex(@"^09\d{9}$", RegexOptions.Compiled);

然后文本更改为:

tb.BackColor = tb.Text.Split(',').All(_phNum.IsMatch) ? Color.White : Color.Red;

推荐阅读