在 C# 中验证字符串是否仅包含大写字母和数字
Verifying that a string contains only uppercase letters and numbers in C#
我会使用 Char.IsLetterOrDigit 但我只需要字母大写。
我似乎找不到组合 Char.IsLetterOrDigit 和 Char.IsUpper 的方法,因为当我尝试这种方式时不允许使用数字:
if (input.All(Char.IsLetterOrDigit) && input.All(Char.IsUpper))
我是不是遗漏了什么?
如何分别检查每个字母?
All()
采用可以是 lambda 表达式的谓词。您可以使用它来检查 IsLetter && IsUpper
与 IsDigit
分开检查。
input.All(c => (Char.IsLetter(c) && Char.IsUpper(c)) || Char.IsDigit(c))
或者,您可以使用匹配零个或多个大写字符或数字的正则表达式:
using System.Text.RegularExpressions;
Regex r = new Regex(@"^[A-Z0-9]*$");
r.IsMatch(input);
正则表达式解释:
^[A-Z0-9]*$
^ Start of string
[A-Z0-9] The uppercase letter characters or the digit characters
* Zero or more of the previous
$ End of string
Regex适合这种字符串断言。
工作示例:
using System;
using System.Text.RegularExpressions;
public class Program
{
public static void Main()
{
String input = "THIS0IS0VALID";
String pattern = "^[A-Z0-9]+$";
bool isValid = Regex.Match(input, pattern).Success;
if(isValid) {
Console.WriteLine("logic here...");
}
}
}
模式细分(^[A-Z0-9]+$):
- ^:断言行首的位置
- [A-Z0-9]:要匹配的字符必须是大写字母或数字
- +:我们可以允许对一个或多个字符进行排序
- $:断言行尾的位置
我会使用 Char.IsLetterOrDigit 但我只需要字母大写。
我似乎找不到组合 Char.IsLetterOrDigit 和 Char.IsUpper 的方法,因为当我尝试这种方式时不允许使用数字:
if (input.All(Char.IsLetterOrDigit) && input.All(Char.IsUpper))
我是不是遗漏了什么?
如何分别检查每个字母?
All()
采用可以是 lambda 表达式的谓词。您可以使用它来检查 IsLetter && IsUpper
与 IsDigit
分开检查。
input.All(c => (Char.IsLetter(c) && Char.IsUpper(c)) || Char.IsDigit(c))
或者,您可以使用匹配零个或多个大写字符或数字的正则表达式:
using System.Text.RegularExpressions;
Regex r = new Regex(@"^[A-Z0-9]*$");
r.IsMatch(input);
正则表达式解释:
^[A-Z0-9]*$
^ Start of string
[A-Z0-9] The uppercase letter characters or the digit characters
* Zero or more of the previous
$ End of string
Regex适合这种字符串断言。
工作示例:
using System;
using System.Text.RegularExpressions;
public class Program
{
public static void Main()
{
String input = "THIS0IS0VALID";
String pattern = "^[A-Z0-9]+$";
bool isValid = Regex.Match(input, pattern).Success;
if(isValid) {
Console.WriteLine("logic here...");
}
}
}
模式细分(^[A-Z0-9]+$):
- ^:断言行首的位置
- [A-Z0-9]:要匹配的字符必须是大写字母或数字
- +:我们可以允许对一个或多个字符进行排序
- $:断言行尾的位置