如何检查字符串是否只是数字和字母数字而不是字符串
本文关键字:字符串 数字 是否 何检查 检查 | 更新日期: 2023-09-27 18:18:37
我有一个示例数据,其中必须确定字符串是数字还是字母数字,但不是简单的字符串。例如:
my data is:
123XY
12346
WEPXY
对前两个(字母数字和数字(返回 true 并对纯字符串返回 false 的条件是什么?
使用正则表达式,例如:
([0-9]+[a-zA-Z]+)|([0-9]+)
编辑:嗯,那有各种各样的问题...我无法用正则表达式本身解决这个问题,但能够创建一个运行良好的函数:
private bool HasLettersAndNumbersOnly(string value)
{
return !(Regex.IsMatch(value, @"^[a-zA-Z]+$") || Regex.IsMatch(value, @"[^a-zA-Z0-9]"));
}
测试:
您可以使用仅允许 A-Z、a-z 和 0-9 的正则表达式,并使用正前瞻要求至少一个数字:
bool isValid = Regex.IsMatch(input, @"^(?=.*'d)[A-Za-z'd]+$");
测试:
"123XY" : true
"12346" : true
"WEPXY" : false
"1abcd" : true
"abcd1" : true
"ab2cd" : true
"1abc2" : true
"1" : true
"a" : false
"1a" : true
"a1" : true
"" : false
Regex r = new Regex(@"'d");
string[] testData = new string[] { "123XY", "12346", "WEPXY" };
foreach (var s in testData)
{
bool isMatch = r.IsMatch(s);
Console.WriteLine("Data: {0}, Is match: {1}", s, isMatch);
}
Console.ReadLine();
基本上你只需要检查字符串是否包含一个数字,对吧? 正则表达式 '''d' 匹配任何数字。
上面的代码打印出来:
数据:123XY,匹配:真
数据:12346,匹配:真
数据:WEPXY,是否匹配:假
如果你想要一个方法来做到这一点,使用这样的东西,你可以检查任何一个,让它返回一个 True 或 false
public static bool IsOnlyNumbers(string strValidateString, bool boolCheck4LetterOrDigit)
{
bool boolValidatePassed = false;
switch (boolCheck4LetterOrDigit)
{
case true:
{
if (strValidateString.All(Char.IsDigit))
{
boolValidatePassed = true;
}
break;
}
case false:
{
if (strValidateString.All(Char.IsLetter))
{
boolValidatePassed = false;
}
break;
}
}
return boolValidatePassed;
}