我有一个示例数据,其中必须确定字符串是数字还是字母数字,而不是简单的字符串。 例如:
my data is:
123XY
12346
WEPXY
前两个(字母数字和数字)返回true的条件是什么,纯字符串返回false?
答案 0 :(得分:3)
使用正则表达式,例如:
([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]"));
}
<强>试验:强>
答案 1 :(得分:1)
您可以使用仅允许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
答案 2 :(得分:0)
如果你想要一个方法来做这样的事情你可以检查任何一个并让它返回一个真或假
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;
}
答案 3 :(得分:0)
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,匹配:错误