我想确保八个字符代码中的前4个字母是一个字母。是否有功能,或者我必须自己制作。
答案 0 :(得分:3)
你可以添加javascript / regex验证
正则表达式
^[a-zA-Z]{4}.*
答案 1 :(得分:1)
您应该使用regular expression validator来实现此目标。
答案 2 :(得分:1)
Char.IsLetter怎么样?
它有2个覆盖:一个用于传递一个字符,另一个用传递字符串和索引。
答案 3 :(得分:0)
AFAIK没有内置功能。根据用户文化,字母可能意味着不同的东西。如果您的意思是ASCII字母,您可以像这样测试:
bool IsASCIILetter(char letter) {
return letter >= 65 && letter <= 90 && letter >= 97 && letter <= 122;
}
答案 4 :(得分:0)
如果是要验证的输入控件的内容,请使用RegularExpressionValidator。
这种情况可能只是简单地使用RegEx,但对于更复杂的验证,我尝试避免使用RegExes,因为它们太复杂而无法调试。比我聪明的人说'我有一个问题,我用正则表达式解决了。现在我有两个问题'。即使您对正则表达式感到满意,维护代码的人也可能不是。
更明确的代码更易于阅读和维护:
bool IsValid (string code) {
if (code.Length != 8)
return false;
for (int i = 0; i < 4; ++i) {
if (!Char.IsLetter(code[i]))
return false;
}
return true;
}
答案 5 :(得分:0)
2个选项:
选项1 - 在代码隐藏中检查它:
if (txtBox1.Text.Length >= 4 && txtBox1.Text.ToCharArray().Take(4).All(c => char.IsLetter(c)))
{
// success
}
else
{
// validation failed
}
您没有说明您是强制执行长度为8还是可选,高达 8.您可以相当轻松地添加此检查。
选项2 - 使用带有可选RequiredFieldValidator的RegularExpressionValidator。如果你决定走这条路线,你真的应该知道你想要允许最后4个字符的确切内容,因为下面这个例子允许任何东西并且只限制前4个字母。此外,如果您想强制执行8的长度,这也会有所不同。下面这个是强制性的;要使它可选8个字符,你会使用“[A-Za-z] {4}(。{4})?”代替。
<asp:TextBox ID="txtBox1" runat="server"></asp:TextBox>
<asp:RequiredFieldValidator ID="rfvtxtBox1" runat="server" ControlToValidate="txtBox1" ErrorMessage="txtBox1 is required!" Display="Dynamic">*</asp:RequiredFieldValidator>
<asp:RegularExpressionValidator ID="revtxtBox1" runat="server" ControlToValidate="txtBox1" ValidationExpression="[A-Za-z]{4}.{4}" ErrorMessage="First 4 characters must be a letter!" Display="Dynamic" />
如果您不想允许空白条目,则需要RequiredFieldValidator,因为仅使用RegularExpressionValidator不会阻止空白/空白条目。有关详细信息,请参阅my answer here。