表单验证只允许英文字母字符
本文关键字:英文字母 字符 验证 表单 | 更新日期: 2023-09-27 18:03:15
我想限制我的表单输入输入非英语字符。例如,所有中文、日文、西里尔文,也可以是单个字符,如:
请指教,谢谢
为此,您必须使用Unicode字符属性和块。每个Unicode码点都被分配了一些属性,例如:this point is a Letter。块是代码点范围。
详细信息请参见:
regular-expressions.info关于Unicode码点、字符属性、脚本和块的一般信息
.net中支持的属性和块的MSDN
这些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 ==> IsCyrillic
- 1000 - 109F ==> IsMyanmar
我在解决方案中使用的:
'P{L}
是一个字符属性,它匹配任何非字母的字符("L"代表字母)
'p{IsBasicLatin}
是一个Unicode块,它匹配代码点0000 - 007F
^['P{L}'p{IsBasicLatin}]+$
简单来说:
从开始到结束匹配字符串(^
和$
),当(至少一个)只有非字母或字符来自ASCII表(doce点0000 - 007F)
string[] myStrings = { "Foobar",
"Foo@bar!'"§$%&/()",
"Föobar",
"fóÓè"
};
Regex reg = new Regex(@"^['P{L}'p{IsBasicLatin}]+$");
foreach (string str in myStrings) {
Match result = reg.Match(str);
if (result.Success)
Console.Out.WriteLine("matched ==> " + str);
else
Console.Out.WriteLine("failed ==> " + str);
}
Console.ReadLine();
打印:
matched ==> Foobar
matched ==> Foo@bar!'"§$%&/()
failed ==> Föobar
失败==> fóÓè
您可以在ViewModel上使用正则表达式属性来限制
public class MyViewModel
{
[System.ComponentModel.DataAnnotations.RegularExpression("[a-zA-Z]+")]
public string MyEntry
{
get;
set;
}
}
您可以使用regex ['x00-'x80]+
或['u0000-'u0080]+
。还没有测试,但我认为它应该也可以在c#中工作。
改编自:正则表达式匹配非英语字符?
您可以对文本框使用正则表达式验证,也可以在服务器上验证。
也许这句话能帮到你:=
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");
}
有用链接:
http://social.msdn.microsoft.com/forums/en us/csharpgeneral/thread/84e4f7fa - 5 - fff - 427 f - 8 c0e - d478cb38fa12
http://www.c-sharpcorner.com/Forums/Thread/177046/allow-only-20-alphabets-and-numbers-in-textbox-using-reg.aspx这可能有帮助,但不是有效的方法,而是简单的非正则验证
foreach (char c in inputTextField)
{
if ((int)(c) > 127)
{
// expection or your logic whatever you want to return
}
}