如何修复此正则表达式validation方法?
我是一名新的C#开发人员,我第一次使用Regex
类。
当我为我的简单项目开发validation类时,我正在使用Regex开发许多方法来处理用户输入validation。 我现在正在努力开发一种方法,该方法将validation用户输入的字符数对于从一个文本字段到另一个文本字段不同的有限数量的字符。
public void ValidateLength(string input, int count) { string regFormat = @"[a-zA-Z]{" + count.ToString() + "}"; string message = ""; Regex reg = new Regex(regFormat); foreach (var regexMatch in reg.Matches(input)) { message = regexMatch + "The maximum length is" + count; } }
然后,因为我在ASP.NET中有以下TextBox:
我试图使用这两个TextBox的validation方法,但是,它不起作用,我不知道为什么:
Validate validate = new validate(); if(txtBox.Text.toString() != "") { if(validate.ValidateLength(txtBox.Text.toString(), 20) { //Do this stuff } }
您是否可以帮助我修复/修改此validation方法,以使其能够使用任何TextBox
和用户指定的长度?
我不认为你需要回长度,你是那个传递它的人。 你知道吗?
public bool ValidateLength(string input, int count) { string pattern = @"^[a-zA-Z]{0," + count.ToString() + "}$"; return Regex.IsMatch(input,regFormat); }
你几乎就在那里你的模式是[a-zA-Z]{" + count.ToString() + "}
这只有在找到n
不少于n
元素时才匹配。
所以这里是我更新{0,n}
匹配输入字符串中零到n
个元素的内容。 ^
和$
确保字符串的开头和结尾。
如果我理解正确,您要validation输入计数。 将function更改为此function。 请尝试以下方法:
public void ValidateLength(string input, int count) { string message; string regFormat = @"[a-zA-Z]{" + count.ToString() + "}"; Regex reg = new Regex(regFormat); Match m = reg.Match(input); if (! m.Success) { message = "The maximum length is" + count; } }