我有一個示例數據在哪裏必須確定字符串是數字還是字母數字,但不是簡單的字符串。 爲前:如何檢查字符串是否只有數字和AlphaNumeric而不是字符串?
my data is:
123XY
12346
WEPXY
什麼是返回前兩個(字母和數字),真實和純粹的字符串返回false的條件?
我有一個示例數據在哪裏必須確定字符串是數字還是字母數字,但不是簡單的字符串。 爲前:如何檢查字符串是否只有數字和AlphaNumeric而不是字符串?
my data is:
123XY
12346
WEPXY
什麼是返回前兩個(字母和數字),真實和純粹的字符串返回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]"));
}
測試:
如果你想要一個方法來使用這樣的東西,你可以檢查任何一個d具有它返回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;
}
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,爲符合:假
您可以使用只允許AZ,az和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
太曖昧, 「1E3」 是數字。 – 2011-12-21 19:34:51
@HansPassant,無論哪種情況,結果都是匹配的。它是*數字和字母數字,取決於你的解釋。 – Amy 2011-12-21 19:38:17
https://msdn.microsoft.com/en-us/library/bb384043.aspx – sachin 2016-09-16 10:46:06