"123a * a712"のようなシーケンスが有効です。 4桁目は有効ではないため、3桁の数字はNOT桁であることを保証したいと思います。シーケンス内で少なくとも4桁の非数字を見つける
いくつかの例:
"56 + 33" - 有効(空白も文字である)
"56 + 33 + 6" - (3つ以上の数字以外の文字)無効
"エラー" - 無効
"1234" - 有効
ありがとうございました!
"123a * a712"のようなシーケンスが有効です。 4桁目は有効ではないため、3桁の数字はNOT桁であることを保証したいと思います。シーケンス内で少なくとも4桁の非数字を見つける
いくつかの例:
"56 + 33" - 有効(空白も文字である)
"56 + 33 + 6" - (3つ以上の数字以外の文字)無効
"エラー" - 無効
"1234" - 有効
ありがとうございました!
ヘルパーを使用して使用する必要はありません。
public static class String
{
public static bool containsAtLeastXNonDigit(string s, int nbOfDigit)
{
return s.Count(!char.IsDigit) >= nbOfDigit;
}
}
し、それを使用します。String.containsAtLeastXNonDigit("ToTest", 4);
あなたは絶対に正規表現ソリューションを必要とする場合は、
で行くことができるが、^(\d*[^\d]?){0,3}\d*$
数字は3桁まで一致します。
私は個人的には@fuboが投稿したLINQアプローチを好んでいます。 – OmerM25
数字が ではない3文字しか使用しないようにしたいと思っています。これは、4+が無効になるためです。ただ実現
public static int countNonDigit(string str) {
return (str.Length - str.Count(char.isDigit))
}
if (countNonDigit(str) >= 4) {
// not valid
}
EDIT
、同じことがstr.Count(!char.isDigit);
で達成することができますが、これまでに試した/やっている私たちを表示します。これは「他の誰かがあなたの仕事をしてもらう」サービスではありません。 – CSharpie
この正規表現を使用してください。「(0-9)* \ D \ D \ D [0-9] +))*」「 – rashfmnb
をコンパイルする」@CSharpie私がここに向かうことを決心したとき、それはすでにさまざまな変更の後であったので、その試みを投稿しなかったことを謝罪します。 – OmerM25