2013-07-23 77 views
1

如何检查TextBox是否包含数字,字母,还有特殊字母如“õ,ä,ö,ü”?特殊字母检查

我用代码来检查数字和字母:

Regex.IsMatch(Value, "^[a-z0-9]+$", RegexOptions.IgnoreCase) 
+2

一个更好的问题是什么字你想排除? – NWard

+0

要在Regex中检查特定的Unicode字符,你可以使用'\ unnnn'谓词,其中nnnn是char代码 –

回答

1

是否How can you strip non-ASCII characters from a string? (in C#)包含任何指针?

您可以在正则表达式中使用\uXXXX语法包含unicode,以获取您专门要剥离测试的其他字母。

Regex.IsMatch(Value, "^[a-z0-9\u00c0-\u00f6]+$", RegexOptions.IgnoreCase) 
+0

谢谢,这个作品太棒了! – Taurib

+0

但我不明白,为什么这不适用于“^”盈方。当我删除它,它工作正常.. – Taurib

8

我如何检查是否文本框包含数字和字母,

bool isValid = textBox.Text.All(char.IsLetterOrDigit); 

请看下面的例子:

string str = "Something123õäö"; 
bool isValid = str.All(char.IsLetterOrDigit); 

对于上述情况,您将获得true

+0

如果他不想包含所有char.IsLetterOrDigit字符,例如: “ä”和“ö”但不是“õ”? – pascalhein

+0

这个答案取决于字符串的Unicode统一化!例如'“olé”.Normalize()'会好,而''ole \ u0301“'或''olé”.Normalize(NormalizationForm.FormD)'将被拒绝。请注意,某些(罕见)重音字母不能用一个“System.Char”代码单元进行制作。 –

+0

感谢您的回答,但我更容易的方法为我的代码下面:) – Taurib

1

只是遍历每个char和或连接到其他字符,并与char.GetUnicodeCategory对字母和数字进行比较:

var allowed = new[] { 'ö', 'ä' }; 
var isOK = textBox1.Text.All(c => 
    char.GetUnicodeCategory(c) == UnicodeCategory.LowercaseLetter || 
    char.GetUnicodeCategory(c) == UnicodeCategory.UppercaseLetter || 
    char.GetUnicodeCategory(c) == UnicodeCategory.DecimalDigitNumber || 
    allowed.Contains(c)); 

UnicodeCategory.LowercaseLetter是标准的小写字母('a'..'z'),UnicodeCategory.UppercaseLetter是大写字母,以及UnicodeCategory.DecimalDigitNumber是数字,所以这个和一个定制的allowed数组应该照顾你想要接受的一切。

+0

此代码变得非常长,得到更短的代码下面,但感谢您的回答:) – Taurib

0

如果你想验证所有“二字章程”只是使用\w如果你想看看整个字符串只是字的字符或数字使用正则表达式

+0

我也试过这也,但得到了我的问题解决上面的代码:) – Taurib