私は、文字列が数字かアルファベットであるか単純文字列ではないかを判断する必要があるサンプルデータを持っています。 EX用 :文字列が数字のみで、文字列ではないことを確認する方法?
my data is:
123XY
12346
WEPXY
最初の2つ(英数字と数値)がtrueを返すと、純粋な文字列についてfalseを返す条件は何ですか?
私は、文字列が数字かアルファベットであるか単純文字列ではないかを判断する必要があるサンプルデータを持っています。 EX用 :文字列が数字のみで、文字列ではないことを確認する方法?
my data is:
123XY
12346
WEPXY
最初の2つ(英数字と数値)が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]"));
}
テスト:うまく働いていた関数を作成
このような方法を使用する方法を使用する場合は、それは基本的にあなたがちょうどいい、文字列が数値の桁が含まれていることを確認する必要があります真または偽
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は?正規表現 '\ d'は任意の数字に一致します。
上記のコードが出力します:
データ:123XY、試合です:真の
データ:12346は、試合です:真の
データ:WEPXYは、試合です:偽
AZ、az、および0-9のみを許可する正規表現を使用し、肯定先読みを使用して少なくとも1桁の数字を必要とする正規表現を使用できます。
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
数字だけを探すのはなぜですか?正規表現\ dははるかに単純であり、提供されたテストデータに対して正しい結果を達成します。 – Amy
@Inuyasha:それは "文字列が数字かアルファベットかを判断する"というタスクを達成しません。 '' 12-34 ''のような文字列は偽陽性を与えます。 – Guffa
テスト文字列「12-34」がテストデータに提供されませんでした。条件は単純な文字列ではなく、数値を含むという条件でした。私たちのソリューションは、提供されるデータに適合する必要があります。私たちが夢見るデータではありません。完全に "12-34"はテストのために出てこないでしょう。 – Amy
あまりにも曖昧、 "1E3" は数値です。 –
@ HansPassantのいずれの場合も、結果は一致します。あなたの解釈に応じて、*両方*数値と英数字です。 – Amy
https://msdn.microsoft.com/en-us/library/bb384043.aspx – sachin