我如何validationstring只允许字母数字字符?

我如何使用正则expression式来validationstring只允许字母数字字符?

(我不想让任何空间)。

使用expression式:

^[a-zA-Z0-9]*$ 

即:使用System.Text.RegularExpressions;

 Regex r = new Regex("^[a-zA-Z0-9]*$"); if (r.IsMatch(SomeString)) { ... } 

在.NET 4.0中,您可以使用LINQ:

 if (yourText.All(char.IsLetterOrDigit)) { //just letters and digits. } 

yourText.All将停止执行并在第一次返回false时, char.IsLetterOrDigit报告为false因为All的合同不能被满足。

注意! 这个答案不严格检查字母数字(通常是AZ,az和0-9)。 这个答案允许像åäö这样的本地字符。

你可以用扩展函数而不是正则expression式轻松地完成

 public static bool IsAlphaNum(this string str) { if (string.IsNullOrEmpty(str)) return false; for (int i = 0; i < str.Length; i++) { if (!(char.IsLetter(str[i])) && (!(char.IsNumber(str[i])))) return false; } return true; } 

每个评论:) …

 public static bool IsAlphaNum(this string str) { if (string.IsNullOrEmpty(str)) return false; return (str.ToCharArray().All(c => Char.IsLetter(c) || Char.IsNumber(c))); } 

虽然我认为基于正则expression式的解决scheme可能是我想要的方式,但是我很想将其封装在一个types中。

 public class AlphaNumericString { public AlphaNumericString(string s) { Regex r = new Regex("^[a-zA-Z0-9]*$"); if (r.IsMatch(s)) { value = s; } else { throw new ArgumentException("Only alphanumeric characters may be used"); } } private string value; static public implicit operator string(AlphaNumericString s) { return s.value; } } 

现在,当你需要一个经validation的string时,你可以让方法签名需要一个AlphaNumericString,并知道如果你得到一个,它是有效的(除了空值)。 如果有人试图传递一个未经validation的string,将会产生一个编译器错误。

如果你在意的话,你可以更好的实现所有的相等运算符,或者从普通的string中明确地转换成AlphaNumericString。

我需要检查AZ,az,0-9; 没有正则expression式(即使OP要求正则expression式)。

在这里混合各种答案和评论,并从https://stackoverflow.com/a/9975693/292060讨论,这个testing的字母或数字,避免其他语言字母,并避免其他数字,如分数字符。;

 if (!String.IsNullOrEmpty(testString) && testString.All(c => Char.IsLetterOrDigit(c) && (c < 128))) { // Alphanumeric. } 

^\w+$将允许a-zA-Z0-9_

使用^[a-zA-Z0-9]+$来禁止下划线。

请注意,这两个都要求string不能为空。 使用*而不是+允许空string。

为了检查string是否是字母和数字的组合,可以使用.NET 4.0和LINQ按如下方式重新编写@jgauffin答案:

 if(!string.IsNullOrWhiteSpace(yourText) && (!yourText.Any(char.IsLetter) || !yourText.Any(char.IsDigit))) { // do something here } 

我build议不要依赖.NET框架中的现成代码和代码,试图提出新的解决scheme。这就是我所做的。

 public bool isAlphaNumeric(string N) { bool YesNumeric = false; bool YesAlpha = false; bool BothStatus = false; for (int i = 0; i < N.Length; i++) { if (char.IsLetter(N[i]) ) YesAlpha=true; if (char.IsNumber(N[i])) YesNumeric = true; } if (YesAlpha==true && YesNumeric==true) { BothStatus = true; } else { BothStatus = false; } return BothStatus; }