C# 表单验证只允许使用英文字母字符
我想限制我的表单输入,不要输入非英语字符。例如,所有的中文、日文、西里尔文,但也有单个字符,如:a、–、ù、ù、ü、î、î。这可能吗?我是否必须在我的MVC应用程序上设置区域设置,或者只是执行regex文本框验证?只是一个旁注,我想能够输入数字和其他字符。我只想把字母排除在外C# 表单验证只允许使用英文字母字符,c#,asp.net,regex,asp.net-mvc-3,C#,Asp.net,Regex,Asp.net Mvc 3,我想限制我的表单输入,不要输入非英语字符。例如,所有的中文、日文、西里尔文,但也有单个字符,如:a、–、ù、ù、ü、î、î。这可能吗?我是否必须在我的MVC应用程序上设置区域设置,或者只是执行regex文本框验证?只是一个旁注,我想能够输入数字和其他字符。我只想把字母排除在外 请给出建议,谢谢您可以在ViewModel上使用正则表达式属性来限制此操作 public class MyViewModel { [System.ComponentModel.DataAnnotations.Reg
请给出建议,谢谢您可以在ViewModel上使用正则表达式属性来限制此操作
public class MyViewModel
{
[System.ComponentModel.DataAnnotations.RegularExpression("[a-zA-Z]+")]
public string MyEntry
{
get;
set;
}
}
您可以使用正则表达式[\x00-\x80]+或[\u0000-\u0080]+。还没有测试过,但认为它也应该在C中工作
改编自:
您可以对textbox使用regex验证,也可以在服务器上进行验证。这可能会有所帮助,不是有效的方法,而是简单的非reg验证
foreach (char c in inputTextField)
{
if ((int)(c) > 127)
{
// expection or your logic whatever you want to return
}
}
为此,必须使用Unicode字符属性和块。每个Unicode代码点都指定了一些属性,例如,该点是一个字母。块是代码点范围 有关详细信息,请参阅: 这些Unicode属性和块被写入\p{Name},其中Name是属性或块的名称 当它是像这样的大写字母p\p{Name}时,则是属性/块的否定,即它匹配任何其他内容 例如,有一些属性只有一小段摘录: L==>所有字母字符。 Lu==>字母,大写 Ll==>小写字母 N==>所有数字。这包括Nd、Nl和No类别。 Pc==>标点符号,连接器 P==>所有标点符号。这包括Pc、Pd、Ps、Pe、Pi、Pf和Po类别。 Sm==>符号,数学 例如,有些区块只有一小段摘录: 0000-007F==>IsBasicLatin 0400-04FF==>Iscrylical 1000-109F==>IsMyanmar 我在解决方案中使用的内容: \p{L}是一个字符属性,它匹配的字符不是字母L的字母 \p{IsBasicLatin}是一个与代码点0000-007F匹配的Unicode块 所以你的正则表达式应该是:
^[\P{L}\p{IsBasicLatin}]+$
简单地说:
当ASCII表doce points 0000-007F中至少有一个非字母或字符时,此选项将匹配从开始到结束的字符串“^”和“$”
短c试验方法:
印刷品:
匹配==>Foobar
匹配==>Foo@bar!\§$%&/
失败==>Föobar
失败==>fóÓè
也许这个能帮助你:=
private void Validate(TextBox textBox1)
{
Regex rx = new Regex("[^A-Z|^a-z|^ |^\t]");
if (rx.IsMatch(textBoxControl.Text))
throw new Exception("Your error message");
}
有用链接:-
这与a-z和a-z匹配,那么0-9和其他字符:/,;'[]-=等等。我添加了一个答案,它是否朝着你期望的方向发展,从一个详细的规范答案来看,[\P{L}\P{IsBasicLatin}]不匹配非英语非字母?例如,像٠١٢٣٤这样的其他类型的数字?我认为这是不可取的。看起来他只是想让字符匹配基本的ASCII字符。是的,当然。这就是我所理解的,只需排除非ASCII字母并匹配所有其他Unicode字符。如果这种理解是错误的,那么解决方案非常简单,并且已经有了公认的答案,但这是非常基本的正则表达式知识,不能作为赏金的理由。
private void Validate(TextBox textBox1)
{
Regex rx = new Regex("[^A-Z|^a-z|^ |^\t]");
if (rx.IsMatch(textBoxControl.Text))
throw new Exception("Your error message");
}